Apache spark 如何读取spark结构化流媒体作业中每个微批次的相同起始偏移量?
我正在使用spark结构化流媒体。是否可以在每次批处理执行后重置Kafka偏移量,以便每个批处理从同一起始偏移量而不是仅从新发现的事件读取 引用spark Kafka集成文档中的Apache spark 如何读取spark结构化流媒体作业中每个微批次的相同起始偏移量?,apache-spark,apache-kafka,spark-streaming,kafka-consumer-api,spark-structured-streaming,Apache Spark,Apache Kafka,Spark Streaming,Kafka Consumer Api,Spark Structured Streaming,我正在使用spark结构化流媒体。是否可以在每次批处理执行后重置Kafka偏移量,以便每个批处理从同一起始偏移量而不是仅从新发现的事件读取 引用spark Kafka集成文档中的启动偏移量的说明 对于流式查询,这仅适用于启动新查询时, 而恢复总是从查询结束的地方开始。 查询期间新发现的分区最早将启动 现在,我通过从Kafka inside为每个批处理循环创建一个静态数据帧,并使用一个格式为“rate”的虚拟流数据集来实现这一点。想知道是否有更好的方法来进行结构化流媒体处理,可以将开始偏移量设置为
启动偏移量的说明
对于流式查询,这仅适用于启动新查询时,
而恢复总是从查询结束的地方开始。
查询期间新发现的分区最早将启动
现在,我通过从Kafka inside为每个批处理循环创建一个静态数据帧,并使用一个格式为“rate”的虚拟流数据集来实现这一点。想知道是否有更好的方法来进行结构化流媒体处理,可以将开始偏移量设置为最早的
,以便每次消费时都从最早的可用偏移量开始。下面的内容将实现此目的
.option("startingOffsets", "earliest")
但是请注意,这仅对新创建的查询有效:
开始查询时的起始点,可以是
从最早的偏移量开始,“latest”
,它正好从最晚的偏移量开始
偏移量,或指定每个偏移量的起始偏移量的json字符串
主题划分。在json中,-2
作为偏移量可用于引用
最早,-1
到最晚。注:对于批处理查询,最新(或
不允许隐式地或通过在json中使用-1
)用于流媒体
查询时,这仅在启动新查询时适用,并且
恢复将始终从查询停止的位置开始。新的
查询期间发现的分区最早将启动
或者,您也可以选择每次更改消费者组:
.option("kafka.group.id", "newGroupID")
我的要求是在每个微批处理执行中从相同的偏移量读取数据。现在在所有情况下(最早、最晚、特定偏移量),第一批将从该偏移量读取,但后续批将从上一批停止的位置读取。我在这里试图做的是在所有后续批处理中读取相同的偏移量。我在评论中提到了一种方法(使用虚拟流数据集并在批处理循环中将实际数据作为静态数据帧读取),但我想知道是否有更好的方法来完成。这种处理的用例是什么?我想从Kafka读取的数据是主数据,在Kafka中很少更新。我想充实这一点,并每1分钟将此主数据的完整快照写入永久性存储。奇怪的方法:你对@conetfun?@Akshay的回答是什么?我最终使用了我在问题描述中提到的方法。使用虚拟流数据集,使用始终从相同偏移量读取的速率和insde。