我有一个EventTime流中的元素流到TumblingWindow到AggregationFunction到FlatMap,它维护状态而不是聚合并生成警报
元素来自网络,偶尔事件会有延迟,因此TumblingWindow不会关闭一段时间。在这些情况下,窗口中可以缓冲元素,当与先前收集的元素组合时,将生成警报。有没有办法在这种情况下尽早关闭TumblingWindow?
是否有类似的推荐模式。
我尝试了以下但没有成功......它应该有效吗? 我结合了一个ProcessFunction,一个自定义触发器,并在流中的Element中添加了一个boolean flushSignal。我在窗口的上游插入了ProcessFunction,并从processingElementMethod中启动了一个处理时间计时器 long timeout = ctx.timerService()。currentProcessingTime()+ 10000; 。ctx.timerService()registerProcessingTimeTimer(超时);
并保存传入的元素以处于键控状态
当计时器在onTimer方法中过期时,我从keyedstate中检索了元素,将flushSignal设置为true并将其传递给onTimer收集器。
在触发器中,意图是在onElement方法中返回TriggerResult.FIRE。
但是,Element实例没有进入自定义触发器。在TumblingWindow.assignWindows方法中,时间戳无效。
ProcessFunction.onTimer中的收集器是否需要与ProcessFunction.processElement中的收集器相关联?
请注意,我的元素流有时间特征eventTime,我试图使用的计时器是ProcessingTimeTimer,这是一个问题吗?
我们非常感谢任何建议。
由于 吉姆