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