我有一个Spark集群,总共有17个执行器。我已经将Spark 2.1与Kafka集成在一起,并从以下主题读取数据:
val df = spark
.readStream
.format("kafka")
.options("kafka.bootstrap.servers","localhost:9092")
.options("subscribe","test")
.load
现在,我想知道,当我以集群模式提交我的spark应用程序时,将分配多少执行者(总共17位执行者)来收听Kafka主题并在结构化流媒体中创建微批处理。
此外,当从Kafka读取内容时,如何限制结构化流中微批处理的大小?
答案 0 :(得分:1)
Structured Steaming在每个Kafka主题分区中使用一个分区。由于单个分区是由单个内核处理的,因此从分配给应用程序的执行器中最多将使用此数量的执行器。
批处理中的消息数主要取决于所使用的触发器(因此,如果完全使用批处理,则为批处理间隔),但是请查看maxOffsetsPerTrigger
:
每个触发间隔处理的最大偏移数的速率限制。指定的偏移总数将按比例分配给不同卷的topicPartitions。