我们在集成 Spark-Kafka 流时面临性能问题。
项目设置:
我们使用具有 3 个分区的 Kafka 主题,并在每个分区中生成 3000 条消息,并在 Spark 直接流中对其进行处理。
我们面临的问题:
在处理端,我们使用 Spark 直接流方法来处理相同的内容。根据以下文档。 Spark 应该创建与主题中分区数量一样多的并行直接流(在本例中为 3)。但是在阅读时,我们可以看到来自分区 1 的所有消息首先被处理,然后是第二次,然后是第三次。为什么不并行处理有什么帮助?根据我的理解,如果它同时从所有分区中并行读取,那么消息输出应该是随机的。
http://spark.apache.org/docs/latest/streaming-kafka-0-8-integration.html#approach-2-direct-approach-no-receivers
最佳答案
您是否尝试设置 spark.streaming.concurrentJobs 参数。
可能是你的情况,可以设置为三个。
sparkConf.set("spark.streaming.concurrentJobs", "3")。
谢谢。
关于parallel-processing - Spark Direct Stream 不会为每个 kafka 分区创建并行流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41031930/