apache-spark - Spark 2.1中的Spark-kafka集成分配了多少个executor来监听kafka主题?

标签 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 读取数据时如何限制结构化流中微批处理的大小?

最佳答案

结构化流为每个 Kafka 主题分区使用一个分区。由于单个分区由单个核心处理,因此它将最多使用分配给应用程序的执行器数量。

批量处理的消息数量主要取决于所使用的触发器(因此,如果使用批处理,则批处理间隔也相同),但是请查看 maxOffsetsPerTrigger :

Rate limit on maximum number of offsets processed per trigger interval. The specified total number of offsets will be proportionally split across topicPartitions of different volume.

关于apache-spark - Spark 2.1中的Spark-kafka集成分配了多少个executor来监听kafka主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52179858/

相关文章:

apache-spark - 为什么 Spark 不根据读取时的 Parquet block 大小创建分区? (相反,它似乎按 Parquet 文件压缩大小进行分区)

java.lang.NoClassDefFoundError - org/apache/spark/sql/hive/HiveContext

scala - Spark scala 运行

apache-kafka - 为 Kafka 客户端启用 SSL

apache-spark - 发生异常 : pyspark. sql.utils.AnalysisException 'Queries with streaming sources must be executed with writeStream.start();;\nkafka'

scala - 为什么 Spark 会失败并出现 java.lang.OutOfMemoryError : GC overhead limit exceeded?

python - 从消息中心上的主题检索消息

sbt - 在 Spark 流中找不到 KafkaUtils 类

scala - 在 Databricks 中调用一次 Trigger 以处理 Kinesis Stream

scala - 如何使用 Spark Structured Streaming 将数据从 Kafka 主题流式传输到 Delta 表