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