【发布时间】:2021-08-23 02:33:35
【问题描述】:
我必须通过 Spark 从 Kafka 执行批量查询(基本上是在一个循环中),每次都从上一次迭代中读取的最后一个偏移量开始,这样我就只读取新数据。
Dataset<Row> df = spark
.read()
.format("kafka")
.option("kafka.bootstrap.servers", "localhost:9092")
.option("subscribe", "test-reader")
.option("enable.auto.commit", true)
.option("kafka.group.id", "demo-reader") //not sure about the one to use
.option("group.id", "demo-reader")
.option("startingOffset", "latest")
.load()
批处理查询似乎不支持latest。我想知道是否有可能以另一种方式做类似的事情(不直接处理偏移量)。
编辑:
earliest 似乎检索到了主题中包含的全部数据。
【问题讨论】:
-
你能解释一下你想要做批处理循环而不是流式传输吗?
-
我有限制一起处理相同“类型”的数据,有一个逻辑说明何时处理某个批次。流媒体没有这些区别,而只考虑句点
-
我相信至少在 spark 2.4.3 之前这是不可能的(消费者到偏移映射基于组 id,这在 spark 2.4.3 [spark.apache.org/docs/2.4.3/… 中不受支持。但是似乎火花3.1 确实支持消费者组 id [spark.apache.org/docs/3.1.2/…。您使用的是哪个版本?
-
我在 3.1.1,但仍然没有,它不起作用
标签: java apache-spark apache-kafka spark-structured-streaming