繁体   English   中英

Apache Flink:使用BoundedOutOfOrdernessTimestampExtractor时触发器不触发

[英]Apache Flink: Trigger not firing when using BoundedOutOfOrdernessTimestampExtractor

使用BoundedOutOfOrdernessTimestampExtractor时,不会触发触发器。 但是,当使用具有类似水印的自定义时间戳提取器时,将触发触发器。

下面的示例代码:1.Assigner作为匿名类,可以正常工作

AssignerWithPeriodicWatermarks<Tuple2<Rule, T>> assigner = new AssignerWithPeriodicWatermarks<Tuple2<Rule, T>>() {
  @Override
  public long extractTimestamp(Tuple2<Rule, T> element, long previousElementTimestamp) {
    return System.currentTimeMillis();
  }

  @Override
  public final Watermark getCurrentWatermark() {
    return new Watermark(System.currentTimeMillis()-100);
  }
}; 

2.BoundedOutOfOrdernessTimestampExtractor分配器不起作用

AssignerWithPeriodicWatermarks<Tuple2<Rule, T>> assigner = new BoundedOutOfOrdernessTimestampExtractor<Tuple2<Rule, T>>(Time.milliseconds(100)) {
  @Override
  public long extractTimestamp(Tuple2<Rule, T> element) {
    return System.currentTimeMillis();
  }
};

您认为这些方法有什么不同吗?

从flink邮件列表复制的答案:

区别在于BoundedOutOfOrdernessTimestampExtractor中的水印基于所有先前事件的最大时间戳。 也就是说,如果您没有收到新事件,则水印将不会前进。 相反,您的AssignerWithPeriodicWatermarks的自定义实现始终会根据挂钟推进水印。

由于我使用的是小型静态事件集,因此使用BOOTE时水印不会前进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM