2015-09-04 22 views
1

我正嘗試在KafkaUtils中使用新的directStream方法讀取kafka主題。 我有8個分區的卡夫卡主題。 我正在8個執行器上運行1個內核的紗線( - num-executors 8 --executor-cores 1)。 因此注意到spark會依次讀取一個執行程序中的所有主題分區 - 這顯然不是我想要的。 我想要點燃並行讀取所有分區。 我該如何做到這一點?新的directStream API按順序讀取主題的分區。爲什麼?

謝謝,提前。

+0

對此有更多見解嗎?我使用火花獨立模式,所以我不能準確設置執行程序的數量,但是我感興趣如果我有2個主題並且核心總數設置爲2會發生什麼? –

回答

0

在創建作業時發生與Kafka的初始通信,僅用於設置KafkaRDD的偏移量 - 更具體地說,構成整個羣集中構成KafkaRDD的每個KafkaRDD分區的偏移量。

然後,在每個執行程序上執行作業後,它們將用於提取數據。根據你注意到的情況,你可能已經看到了最初的交流(來自司機)。如果你已經看到所有的工作都在同一個執行者上執行,那麼比使用Kafka還要糟糕的事情。