问题描述
是否可以通过onTimer()
而不是ProcessWindowFunction
来实现KeyedProcessFunction
方法,还是有其他方法可以实现?
我具有此结构,无法更改:
stream.window(EventTimeSessionWindows.withGap(Time.minutes(gapTime))).allowedLateness(Time.minutes(5000))
.process(new MyProcessFunction());
/*The idea is to use the onTimer method or a similiar method if exist inside MyProcessFunction*/
public class MyProcessFunction extends ProcessWindowFunction<IN,OUT,KEY,W>{}
亲切的问候!
解决方法
ProcessWindowFunction
无权使用计时器。它的唯一作用是在窗口的触发器返回FIRE时处理窗口的内容。
触发器可以具有计时器。因此,一种可能的解决方案可能是使用自定义触发器,该触发器使ProcessWindowFunction
具有基于时间的附加触发。
在窗口API不够灵活的情况下,另一种解决方案是使用KeyedProcessFunction
来实现自己的自定义窗口。