Spark Streaming 和 Kafka 集成中的并行任务数
Number Of Parallel Task in Spark Streaming and Kafka Integration
我是 Spark 的新手 Streaming.I 有一些基本的疑问..有人可以帮我澄清一下吗:
我的消息大小是标准的。每条消息1Kb。
Topic分区数为30,使用dstream方式消费来自kafka的消息
分配给 spark 作业的核心数为:
( spark.max.cores=6| spark.executor.cores=2)
据我了解,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
}
另外由于我给了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 次。
我是 Spark 的新手 Streaming.I 有一些基本的疑问..有人可以帮我澄清一下吗:
我的消息大小是标准的。每条消息1Kb。
Topic分区数为30,使用dstream方式消费来自kafka的消息
分配给 spark 作业的核心数为:
( spark.max.cores=6| spark.executor.cores=2)
据我了解,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
}
另外由于我给了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 次。