固定窗口中的默认水印是什么?

时间:2018-04-30 09:36:51

标签: streaming apache-flink flink-streaming

我正在阅读Tyler Akidau的文章the-world-beyond-batch-streaming-102。对于水印,我仍然有点困惑,即关于文章中的代码:

PCollection<KV<String, Integer>> scores = input
  .apply(Window.into(FixedWindows.of(Duration.standardMinutes(2)))
               .triggering(AtWatermark()))

  .apply(Sum.integersPerKey());

它只是告诉引擎触发水印,但引擎如何知道水印?据我所知,应该是用户需要说的某种时间延迟。或者引擎是否构建得如此智能,以至于它试图为用户制作一个(根据某些默认策略或配置)?

非常感谢。

1 个答案:

答案 0 :(得分:2)

Google数据流(Tyler Akidau在您引用的文章中描述的内容)可以使用启发式方法来估算水印 - 有关详细信息,请参阅this answer

另一方面,Flink依赖于emitted by the data sourcewatermark generator的显式水印。最常见的方法是假设有限的延迟。