它是什么意思AfterWatermark.withEarlyFirings?

时间:2017-11-11 11:41:45

标签: google-cloud-dataflow

我们了解withLateFirings中提到的示例中的codelabs。它对withEarlyFirings的真正含义是什么?

2 个答案:

答案 0 :(得分:0)

在数据流中读取关于窗口化的相关数据可能是值得的。滑动时间窗口还使用数据流中的时间间隔来定义数据包;然而,随着滑动时间窗口,窗口重叠。每个窗口可能会捕获五分钟的数据,但每隔十秒就会启动一个新窗口。滑动窗口开始的频率称为周期。 更多细节可以从" Windowing"文档page,"滑动时间Windows"分章。

答案 1 :(得分:0)

水印是系统关于该窗口的所有事件何时到达的概念。早期发射允许在水印之前发出早期的推测结果。

可以在this article中找到一个非常有趣的动画示例。例如,以下代码段每分钟提供早期更新:

PCollection<KV<String, Integer>> scores = input
  .apply(Window.into(FixedWindows.of(Duration.standardMinutes(2)))
               .triggering(
                 AtWatermark()
                   .withEarlyFirings(AtPeriod(Duration.standardMinutes(1)))
                   .withLateFirings(AtCount(1))))
  .apply(Sum.integersPerKey());

如果你想玩弄它,你也可以使用getTiming()获取每个被激活窗格的时间。 PaneInfo docs

@ProcessElement
public void processElement(ProcessContext c) throws Exception {
    String timing  = c.pane().getTiming().toString());
    ...
}