我有一個用例,我必須以FIFO的方式處理事件。這些是機器產生的事件。每臺機器每30秒產生一個事件。對於特定的機器,我們需要根據FIFO fasion來處理事件。使用Spark Streaming進行FIFO處理?
我們需要每天處理大約2.4億個事件。對於如此巨大的規模,我們需要使用Kafka + Spark Streaming
從Kafka文檔中,我明白我們可以使用消息的關鍵字段將消息路由到特定的主題分區。這可以確保我可以使用機器ID作爲密鑰,並確保來自特定機器的所有消息落入相同的主題分區。
解決了50%的問題。
問題在處理方面。
Kafka Direct方法的spark文檔說RDD分區相當於Kafka分區。
因此,當我執行rdd.foreachPartition沒有任務迭代在有序fasion?
是否確保RDD的一個分區總是在一個執行器中?
是否確保foreachPartition任務僅由整個分區的一個線程執行?
請幫忙。
第一句在這個答案回答是非常重要的。任何混洗導致的操作都會導致數據「不同步」。如果這是一個問題,考慮明確地排序每臺計算機ID的事件。 –