当前位置:   article > 正文

窗口实用触发器:ContinuousEventTimeTrigger

continuouseventtimetrigger

点击上方蓝

字关注~

       

                     

短窗口的计算由于其窗口期较短,那么很快就能获取到结果,但是对于长窗口来说窗口时间比较长,如果等窗口期结束才能看到结果,那么这份数据就不具备实时性,大多数情况我们希望能够看到一个长窗口的结果不断变动的情况,对此Flink提供了ContinuousEventTimeTrigger连续事件时间触发器与ContinuousProcessingTimeTrigger连续处理时间触发器,指定一个固定时间间隔interval,不需要等到窗口结束才能获取结果,能够在固定的interval获取到窗口的中间结果。

ContinuousEventTimeTrigger

ContinuousEventTimeTrigger表示连续事件时间触发器,用在EventTime属性的任务流中,以事件时间的进度来推动定期触发

  1. public TriggerResult onElement(Object element, long timestamp, W window, TriggerContext ctx) throws Exception {
  2. --part 1
  3. if (window.maxTimestamp() <= ctx.getCurrentWatermark()) {
  4. // if the watermark is already past the window fire immediately
  5. return TriggerResult.FIRE;
  6. } else {
  7. ctx.registerEventTimeTimer(window.maxTimestamp());
  8. }
  9. ---part 2
  10. ReducingState<Long> fireTimestamp = ctx.getPartitionedState(stateDesc);
  11. if (fireTimestamp.get() == null) {
  12. long start = timestamp - (timestamp % interval);
  13. long nextFireTimestamp = start + interval;
  14. ctx.registerEventTimeTimer(nextFireTimestamp);
  15. fireTimestamp.add(nextFireTimestamp);
  16. }
  17. return Trigge
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/690694
推荐阅读
相关标签
  

闽ICP备14008679号