使用Kafka源进行Spark结构化流式处理,在查询运行时更改主题分区的数量

我已经建立了一个从Kafka主题读取的Spark结构化流查询。 如果在运行Spark查询时更改了主题中的分区数,则Spark似乎不会注意到,并且新分区上的数据也不会被使用。

除了停止查询并重新启动查询之外,是否有办法告诉Spark在同一主题中检查新分区?

编辑: 我正在使用Spark 2.4.4。我从卡夫卡读到的内容如下:

spark
      .readStream
      .format("kafka")
      .option("kafka.bootstrap.servers",kafkaURL)
      .option("startingOffsets","earliest")
      .option("subscribe",topic)
      .option("failOnDataLoss",value = false)
      .load()

经过一些处理后,我在Delta Lake表上写入HDFS。

h540969896 回答:使用Kafka源进行Spark结构化流式处理,在查询运行时更改主题分区的数量

回答我自己的问题。 Kafka使用者每metadata.max.age.ms(默认值为300000(5分钟)检查是否有新的分区/主题(如果使用模式订阅主题)。

由于我的测试持续时间远不止于此,所以我不会注意到更新。对于测试,请将值减小到较小的值,例如通过设置DataStreamReader的以下选项可以达到100毫秒:

.option("kafka.metadata.max.age.ms",100)
本文链接:https://www.f2er.com/3140839.html

大家都在问