是否可以收集中心是特定感兴趣事件的窗口?
想象一下事件流:
....e...........e...E........e......
特别是我对触发事件E及其周围环境感兴趣(+ - 几分钟):
....e..........|e...E....|....e......
答案 0 :(得分:1)
使用Flink的窗口运算符(包括自定义Trigger
和Evictor
实现)实现此逻辑应该是可能的,但在我看来非常具有挑战性。
我认为更好的方法是ProcessFunction
。 ProcessFunction
可以注册调用回调函数的计时器(处理时间或事件时间)。对于给定的用例,ProcessFunction
将收集托管状态下的所有记录。当接收到触发事件时,注册定时器以等待更多事件到达,直到触发事件周围的窗口边界到期。此外,ProcessFunction
需要定期删除过早到达的所有元素以与触发事件关联。这也可以通过注册计时器来完成。