从以前的窗口获取值

2024-06-08 15:19:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在计算固定数据窗口的统计数据(最小值、平均值等)。数据以单点形式传输,并且是连续的(如温度)。你知道吗

我当前的管道(简化为这个问题)如下所示:

read -> window -> compute stats (CombineFn) -> write

问题是每个窗口的统计数据都不正确,因为它们没有基线。我的意思是,我希望每个窗口的统计数据都包含来自上一个窗口数据的单个数据点(最新的一个)。你知道吗

考虑这一点的一种方法是,每个窗口的input PCollection应该包括那些通常由于时间戳而出现在窗口中的输入PCollection,但也应该包括前一个窗口PCollection中的一个额外点。你知道吗

我不知道该怎么做。以下是我想做的一些事情:

  • 用修改后的时间戳复制每个窗口中的最新数据点,使其在下一个窗口的时间范围内到达
  • 类似地,为每个窗口创建一个PCollectionView单例,其中包含其最新数据点的修改版本,该数据点将作为要合并到下一个窗口的input PCollection的边输入使用

一个约束是,如果一个窗口没有任何新的数据点,除了转发给它的数据点之外,它应该将该值重新转发给下一个窗口。你知道吗


Tags: 数据readinput管道stats时间温度window
1条回答
网友
1楼 · 发布于 2024-06-08 15:19:50

听起来您可能需要将一个值从一个窗口复制到任意多个未来窗口中。我知道的唯一方法是通过state and timers。你知道吗

您可以编写一个有状态的DoFn,该DoFn对全局加窗数据进行操作,并以其状态存储每个窗口的最新(按时间戳)元素,并在每个窗口边界处触发一个计时器,将该元素放入后续窗口。(您可以利用Latestcombine操作来获取每个窗口的最新元素,而不是手动操作。)用原始数据展平此操作,然后再开窗应该会得到所需的值。你知道吗

相关问题 更多 >