我开始使用Spark结构化流式传输。
我从kafka主题获取readStream(startOffset:最新) 用waterMark, 按事件时间与窗口持续时间进行分组 并写到kafka主题。
我的问题是 在Spark结构化流作业之前,如何处理写入kafka主题的数据?
我一开始尝试使用“ startOffset:最早”运行。但是kafka主题中的数据太大,因此由于纱线超时而无法启动火花流处理过程。 (即使我增加了超时值)
1。 如果我只是创建一个批处理作业并按特定数据范围进行过滤。 结果未反映在火花流的当前状态中, 结果的一致性和准确性似乎存在问题。
如何处理旧数据和大数据? 救救我。
答案 0 :(得分:1)
您可以尝试使用Kafka + Structured Streaming的参数maxOffsetsPerTrigger
来接收来自Kafka的旧数据。将此参数的值设置为您希望一次从Kafka接收的记录数。
使用:
sparkSession.readStream
.format("kafka")
.option("kafka.bootstrap.servers", "localhost:9092")
.option("subscribe", "test-name")
.option("startingOffsets", "earliest")
.option("maxOffsetsPerTrigger", 1)
.option("group.id", "2")
.option("auto.offset.reset", "earliest")
.load()