【问题标题】:Number Of Parallel Task in Spark Streaming and Kafka IntegrationSpark Streaming 和 Kafka 集成中的并行任务数
【发布时间】:2021-04-01 17:39:33
【问题描述】:

我是 Spark Streaming 的新手。我有一些基本的疑问..有人可以帮我澄清一下吗:

  1. 我的消息大小是标准的。每条消息1Kb。

  2. Topic 分区数为 30,使用 dstream 方式消费来自 kafka 的消息。

  3. spark 作业的核心数为:

    (spark.max.cores=6| spark.executor.cores=2)

  4. 据我了解,Kafka 分区数=RDD 分区数:

     In this case dstream approach:
    
     dstream.forEachRdd(rdd->{
     rdd.forEachPartition{
     }
    
      **Question**:This loop forEachPartiton will execute 30 times??As there are 30 Kafka partitions
    

    }

  5. 另外由于我给了6核,从kafka会并行消耗多少个分区

    问题:一次是6个分区吗 或
    30/6 = 一次 5 个分区? 有人可以详细说明这在 dstream 方法中是如何工作的吗?

【问题讨论】:

    标签: scala apache-spark apache-kafka spark-streaming spark-kafka-integration


    【解决方案1】:

    "是一次6个分区还是 30/6 = 一次 5 个分区?”

    正如您已经说过的,Direct Stream 中生成的 RDD 将匹配 Kafka 主题的分区数。

    在每个微批处理上,Spark 将创建 30 个任务来读取每个分区。由于您已将最大内核数设置为 6,因此作业能够并行读取 6 个分区。只要有一个任务完成,就可以使用一个新的分区。

    请记住,即使您在分区中没有新数据,生成的 RDD 仍然会获得 30 个分区,所以,是的,循环 forEachPartiton 将在每个微批次中迭代 30 次。

    【讨论】:

      猜你喜欢
      • 2019-09-29
      • 2019-01-15
      • 2021-02-28
      • 2019-06-08
      • 2018-01-13
      • 1970-01-01
      • 2016-10-02
      • 2019-02-19
      • 1970-01-01
      相关资源
      最近更新 更多