这是什么意思AfterWatermark.withEarlyFirings?
问题描述:
我们了解codelabs中提到的示例中的withLateFirings。这是什么意思关于withEarlyFirings?这是什么意思AfterWatermark.withEarlyFirings?
答
阅读数据流窗口相关数据可能是值得的。滑动时间窗口也使用数据流中的时间间隔来定义数据束;然而,随着时间窗的滑动,窗户重叠。每个窗口可能会捕获5分钟的数据,但每隔10秒就会有一个新窗口开始。滑动窗口开始的频率称为周期。 可以从“窗口”文档page,“Sliding Time Windows”子章节中收集更多详细信息。
答
水印是系统关于该窗口的所有事件何时到达的概念。早期发射允许在水印之前发出早期的推测结果。
动画中一个非常有趣的例子可以在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());
...
}