流式处理中的窗口策略详解
1. 不同观察顺序下的事件时间窗口
在流式处理中,我们会遇到不同的观察顺序。有一种观察顺序是我们常见的,标记为白色;另一种则是所有值在处理时间轴上发生偏移,标记为紫色。可以想象,紫色示例就像是如果风向从东方吹来而非西方时现实可能呈现的另一种情况,即底层的复杂分布式系统以稍有不同的顺序运行。
为了建立基准,我们先比较在事件时间下使用启发式水印对这两种观察顺序进行固定窗口划分的情况。通过复用相关代码,我们得到了相应结果。尽管由于处理时间中观察顺序的不同,输出的整体形状有所差异,但四个窗口的最终结果保持一致,分别为 14、18、3 和 12。
2. 基于触发器的处理时间窗口
接下来,我们对比两种处理时间窗口方法,首先是触发器方法。要使处理时间“窗口化”以这种方式工作,有三个方面需要考虑:
- 窗口划分 :使用全局事件时间窗口,因为本质上是用事件时间窗格来模拟处理时间窗口。
- 触发机制 :在处理时间域中根据所需的处理时间窗口大小进行定期触发。
- 累积模式 :采用丢弃模式,使各个窗格相互独立,每个窗格就像一个独立的处理时间“窗口”。
对应的代码如下:
PCollection<KV<Team, Integer>> totals = input
.apply(Window.triggering(Repeatedly(AlignedDelay(ONE_MINUTE)))
超级会员免费看
订阅专栏 解锁全文
1万+

被折叠的 条评论
为什么被折叠?



