我正在開發一個apache spark用例,我需要從kafka讀取數據。我有一個非常基本的問題來理解火花從卡夫卡讀取數據的方式。kafka - 多個主題vs多個分區
根據我的理解,如果數據速度和體積很高,那麼我可以在卡夫卡中創建多個分區並在火花中讀取它。現在,dstream中的分區數量與kafka中的分區數量相同。
我可以通過創建多個包含每個分區的kafka主題來實現相同的方案。我可以配置我的卡夫卡製作人將數據按順序推送到所有主題。這將在spark中創建多個dstream。然後,我可以簡單地「聯合」所有的dstream來創建我的unionedDstream。
現在我的問題是在於: -
將「其他dstreams的工會」創建unionedDstream將有相同數量的分區通過讀取「單一話題多個分區」
創建一個爲了清晰起見,我將舉一個例子: -
我有單一生產者和單一消費者。
在第一種方案: -
(1)1個卡夫卡話題4個分區 - > 1 DSTREAM有4個分區
在第二場景: -
(2)4個卡夫卡主題使用1個分區 - > 4個Dstream,每個分區有一個分區。
但是在這裏我可以「聯合」所有的dstream來創建一個dstream。
unionedDstream= dstream1.union(dstream2).union(dstream3).union(dstream4)
現在將「unionedDstream」變成「帶有4個分區的1個Dstream」(與第一個場景相同)。如果是的話那麼哪個流程會更有效果呢?