She*_*oli 5 windowing apache-flink flink-streaming
我无法理解水印和允许迟到的概念。
以下是 [邮件存档| 的摘录] https://www.mail-archive.com/user@flink.apache.org/msg08758.html]讨论了水印,但我还有几个问题。以下是引用的例子:
假设您有一个
BoundedOutOfOrdernessTimestampExtractor2 分钟限制和 10 分钟滚动窗口,从 12:00 开始到 12:10 结束:如果您有以下流序列:
Run Code Online (Sandbox Code Playgroud)12:01, A 12:04, B WM, 12:02 // 12:04 - 2 minutes 12:02, C 12:08, D 12:14, E WM, 12:12 12:16, F WM, 12:14 // 12:16 - 2 minutes 12:09, G不允许迟到
当窗口操作符接收并评估此时
<WM, 12:12>包含的窗口时,将逻辑时间转发到12:12,并最终清除其状态。后来被忽略。[A, B, C, D]<12:09, G>允许迟到3分钟
窗口操作符在接收到窗口时评估窗口
<WM, 12:12>,但其状态尚未清除。收到后状态将被清除<WM, 12:14>(窗口触发时间 12:10 + 允许延迟 3 分钟)。<12:09, G>再次被忽略。允许迟到5分钟
窗口操作符在接收到窗口时评估窗口
<WM, 12:12>,但其状态尚未清除。当<12:09, G>收到时,再次评估窗口,但这次[A, B, C, D, G]发送更新。当收到 >= 12:15 的水印时,状态将被清除。
我认为:
我的问题基于理解:
如果您有以下流序列:
Run Code Online (Sandbox Code Playgroud)12:01, A 12:04, B WM, 12:02 // 12:04 - 2 minutes 12:02, C 12:01, CCC // Inserted by Sheel 12:08, D 12:14, E WM, 12:12 12:16, F WM, 12:14 // 12:16 - 2 minutes 12:09, G
这仍然在 12:00-12:10 窗口中,但位于水印 WM 12:02 后面。假设允许迟到 5 分钟。该记录是否会“以某种方式”被接受,将允许的迟到纳入考虑范围,或者考虑到水印 12:02 已经跨越,该记录是否会被删除?
控制Watermarks窗口的生命周期,但不直接控制是否删除记录。当FlinkWindowOperator收到一条新记录时,它会计算它所属的窗口集。如果该集合包含至少一个活动窗口,这意味着不存在比该窗口的结束时间+允许的迟到时间更高的水印,则该记录将被分配给该窗口,并将成为窗口计算的一部分(即使该记录的结束时间+允许的迟到时间)。时间戳低于上次看到的水印)。因此,可以说 Windows 降低了各个记录的水印分辨率。
在您的情况下,这意味着 和 都C将CCC成为窗口的一部分12:00 - 12:10,因为系统还没有看到Watermarkwith >= 12:10。
| 归档时间: |
|
| 查看次数: |
2543 次 |
| 最近记录: |