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