我们使用带有水印的周期性事件时间窗口。目前,我们的 Flink 应用程序中有 4 个并行任务。
在流式传输过程中,所有4个任务的水印值必须接近触发窗口事件。
例如;
任务1水印值= 8
任务2水印值= 1
任务3水印值= 8
任务4水印值=8
任务 2 正在等待日志更新其水印。但是,这种情况可能发生在任务 2 更新之前,我们希望在它之前触发窗口事件。
是否有任何机制可以对齐所有并行任务的水印或触发窗口事件而不等待其他任务?
@Til Rohrmann 已经在评论中回答了这个问题,主要答案:
如果您想查找 3 个同一个人的发件人,那么您 应该
这个人,然后简单地使用计数窗口来 生成警报。也许您还想过滤掉重复的发件人 对于同一个人。keyBy
后续问题:
但是我们还需要考虑活动时间。例如 3 个发件人 10分钟(活动时间非处理时间)
后续回答:
然后您可以使用带有自定义触发器的事件时间窗口 当它看到 3 个元素时触发。
我认为关键的结论是: 如果你想触发某件事的计数,请按该字段。
我知道这是一个老电话。但是 Flink 1.18 实现了 Watermark 对齐 一些内部的东西。
也许这对于刚接触这个问题的新人来说仍然有用。