【问题标题】:Spark Direct Stream is not creating parallel streams per kafka partitionSpark Direct Stream 不会为每个 kafka 分区创建并行流
【发布时间】:2017-04-23 06:00:51
【问题描述】:

我们在集成 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

【问题讨论】:

  • 但在阅读时,我们可以看到来自分区 1 的所有消息首先得到处理,然后是第二个,然后是第三个。你怎么看?

标签: parallel-processing spark-streaming


【解决方案1】:

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

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

谢谢。

【讨论】:

  • 我不确定你是否解决了这个问题。但是我们使用“spark.streaming.kafka.maxRatePerPartition”标志解决了它。如您所提到的,如果不设置此标志,则默认行为完全相同。一旦我们将此标志设置为 100 条消息,我们可以看到分区是并行处理的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多