如何使用Spark结构化流构建lambda体系结构?

问题描述 投票:0回答:1

我们正在构建具有Spark结构化流的lambda架构。我们计划将批处理作业的运行时间推迟大约8个小时,而每30秒左右运行一次流式传输部分。

困扰我们的一部分是,我们需要定期从某些批次停止处理的实体中重新处理流处理部分。

  1. 想象批次已处理事件到t1
  2. 流在t2(t2> t1)
  3. 我们正在从流传输管道的eventhub中读取

对于大多数实体

  1. 我们要从t2开始运行下一个微型批处理
  2. 我们要从t1重新处理的某些较小的子集

我的想法是在上次处理事件时获取与微批处理相关联的batchId /时间戳。我想说的是event-batch> batchId或event-receivedtimestamp> Lastfullyprocessedtimestamp以跳过除我要重新处理的事件以外的大多数事件。

但是我还没有找到找到最后一个进程或batchId的时间戳的方法。

其他人是否遇到过类似情况?他们如何去做呢?

apache-spark spark-structured-streaming
1个回答
0
投票

但是我还没有找到找到最后一个进程或batchId的时间戳的方法。

应该是StreamingQueryProgress的一部分,并且timestamp看起来像您想要的。

触发器的开始时间为ISO8601格式,即UTC时间戳。

使用StreamingQueryProgressesStreamingQuery.lastProgress可获得最后和最近的StreamingQuery.recentProgress

© www.soinside.com 2019 - 2024. All rights reserved.