在Spark 2.1的Spark-kafka集成中分配了多少执行者来收听kafka主题?

时间:2018-09-05 07:50:04

标签: apache-spark apache-kafka spark-structured-streaming

我有一个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读取内容时,如何限制结构化流中微批处理的大小?

1 个答案:

答案 0 :(得分:1)

Structured Steaming在每个Kafka主题分区中使用一个分区。由于单个分区是由单个内核处理的,因此从分配给应用程序的执行器中最多将使用此数量的执行器。

批处理中的消息数主要取决于所使用的触发器(因此,如果完全使用批处理,则为批处理间隔),但是请查看maxOffsetsPerTrigger

  

每个触发间隔处理的最大偏移数的速率限制。指定的偏移总数将按比例分配给不同卷的topicPartitions。