Spark Direct Stream不会为每个kafka分区创建并行流

Aru*_*Aru 5 parallel-processing spark-streaming

我们在整合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

Sar*_*ian 1

您是否尝试设置spark.streaming.concurrentJobs参数。可能根据你的情况,可以设置为三个。

SparkConf.set("spark.streaming.concurrentJobs", "3").

谢谢。

  • 我不确定你是否已经解决了这个问题。但我们使用“spark.streaming.kafka.maxRatePerPartition”标志解决了这个问题。正如您所提到的,如果不设置此标志,默认行为完全相同。一旦我们将此标志设置为 100 条消息,我们就可以看到分区是并行处理的。 (2认同)