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

时间:2018-01-11 04:33:28

标签: apache-flink flink-streaming

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

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

winpty

2.BoundedOutOfOrdernessTimestamp提取器分配器不工作

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);
  }
}; 

你认为方法有什么不同吗?

1 个答案:

答案 0 :(得分:0)

从flink邮件list复制的答案:

  

不同之处在于水印来自   BoundedOutOfOrdernessTimestampExtractor基于最大的时间戳   以前的所有活动。也就是说,如果您没有收到新事件,那么Watermark   不会前进。相比之下,你的自定义实现   AssignerWithPeriodicWatermarks总是根据墙壁推进水印   时钟。

由于我使用的是一小组静态事件,因此使用BOOTE时水印没有进展。