[英]Number Of Parallel Task in Spark Streaming and Kafka Integration
我是 Spark Streaming 的新手。我有一些基本的疑问。有人可以帮我澄清一下吗:
我的消息大小是标准的。每条消息 1Kb。
主题分区数为 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中并行消耗多少分区
问题:是一次6个分区还是
30/6 =一次5个分区? 有人可以详细说明这在 dstream 方法中的工作原理吗?
“是一次6个分区还是30/6=一次5个分区?”
正如您已经说过的,Direct Stream 中生成的 RDD 将匹配 Kafka 主题的分区数。
在每个微批处理上,Spark 将创建 30 个任务来读取每个分区。 由于您已将最大核心数设置为 6,因此作业能够并行读取 6 个分区。 一旦其中一项任务完成,就可以使用一个新分区。
请记住,即使您在其中一个分区中没有新数据,生成的 RDD 仍然有 30 个分区,所以,是的,循环forEachPartiton
将在每个微批次中迭代 30 次。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.