最近我阅读了flink官方文档,了解了一些关于水印的内容。
网址:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/event_time.html
有两张图片说明了flink水印机制,这让我很困惑:
第一幅图很容易理解,但在第二幅图中,我想知道如何获得w(11)和w(17)?我们知道,我们可以定义如何在flink作业中生成水印,换句话说,水印是按照一定的规则生成的。那么在第二张图片中生成水印的规则是什么呢?
我查找了几乎所有不同版本flink的官方文档,它们都使用相同的图片。这让我很困惑。有什么解释吗?
发布于 2021-03-30 17:27:58
你说得对;这个例子很让人困惑。虽然它确实说明了一种可能的情况,但它并不容易理解。
通常,水印是使用有界无序水印策略生成的,其中时间戳分配器跟踪到目前为止看到的最大时间戳(作为在流记录的元数据中分配时间戳的副作用)。然后,每当周期性水印生成器的计时器开始计时(默认情况下为200毫秒)时,将从该最大时间戳中减去指定的有界延迟,并使用结果创建新的水印(假设所得到的时间戳大于先前的水印)。
在该图所示的示例中,W(17)之前的最大时间戳似乎是22,因此有界延迟可能是5。根据相同的推理,因此在W(11)之前应该存在时间16的事件,但如果有,则它位于时间7的事件之前的某个位置。
https://stackoverflow.com/questions/66864700
复制相似问题