我在计算固定数据窗口的统计数据(最小值、平均值等)。数据以单点形式传输,并且是连续的(如温度)。你知道吗
我当前的管道(简化为这个问题)如下所示:
read -> window -> compute stats (CombineFn) -> write
问题是每个窗口的统计数据都不正确,因为它们没有基线。我的意思是,我希望每个窗口的统计数据都包含来自上一个窗口数据的单个数据点(最新的一个)。你知道吗
考虑这一点的一种方法是,每个窗口的input PCollection应该包括那些通常由于时间戳而出现在窗口中的输入PCollection,但也应该包括前一个窗口PCollection中的一个额外点。你知道吗
我不知道该怎么做。以下是我想做的一些事情:
一个约束是,如果一个窗口没有任何新的数据点,除了转发给它的数据点之外,它应该将该值重新转发给下一个窗口。你知道吗
听起来您可能需要将一个值从一个窗口复制到任意多个未来窗口中。我知道的唯一方法是通过state and timers。你知道吗
您可以编写一个有状态的DoFn,该DoFn对全局加窗数据进行操作,并以其状态存储每个窗口的最新(按时间戳)元素,并在每个窗口边界处触发一个计时器,将该元素放入后续窗口。(您可以利用Latestcombine操作来获取每个窗口的最新元素,而不是手动操作。)用原始数据展平此操作,然后再开窗应该会得到所需的值。你知道吗
相关问题 更多 >
编程相关推荐