我试图了解Spark Structured Streaming在将批处理查询设置为“最新”时如何确定endingOffsets
。如果持续写入Kafka主题,并且我运行批处理Spark结构化流作业以从上述主题中读取(在执行任务期间继续写入该主题),那么 latest < / strong> 确定位置?根据{{3}},endingOffsets
为:
批处理查询结束时的终点,可以是“最新”(仅指最新),也可以是json字符串,为每个TopicPartition指定结束偏移量。在json中,可以使用-1作为偏移量来表示最新,而不允许使用-2(最早)作为偏移量。
基于此,endingOffsets
是否基于工作开始的时间?这是使用批处理查询从主题读取的代码片段。
# Subscribe to 1 topic defaults to the earliest and latest offsets
df = spark \
.read \
.format("kafka") \
.option("kafka.bootstrap.servers", "host1:port1,host2:port2") \
.option("subscribe", "topic1") \
.option("endingOffsets", "latest") \
.load()
df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")