Spark Streaming 和 Kafka 集成中的并行任务数

Number Of Parallel Task in Spark Streaming and Kafka Integration

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

  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中并行消耗多少partition

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

"Is it 6 partitions at a time or 30/6 =5 partitions at a time?"

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

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

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