我们正在构建具有Spark结构化流的lambda架构。我们计划将批处理作业的运行时间推迟约8个小时,而每30秒左右运行一次流式传输。
困扰我们的一个方面是,我们需要定期对某些实体的流处理部分进行重新处理。
即
对于大多数实体
我的想法是在上次处理事件时获取与微批处理相关联的batchId /时间戳。我想说的是event-batch> batchId或event-receivedtimestamp> Lastfullyprocessedtimestamp以跳过除我要重新处理的事件以外的大多数事件。
但是我还没有找到找到最后一个进程或batchId时间戳的方法。
其他人是否遇到过类似情况?他们如何去做呢?
答案 0 :(得分:0)
但是我还没有找到找到最后一个进程或batchId时间戳的方法。
这应该是StreamingQueryProgress的一部分,而timestamp
看起来像您想要的。
ISO8601格式的触发器的开始时间,即UTC时间戳。
最后StreamingQueryProgresses
和最近的{{1}}可通过StreamingQuery.lastProgress和StreamingQuery.recentProgress使用。