Apache Flink:使用 BoundedOutOfOrdernessTimestampExtractor 时触发不



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

示例代码如下: 1.分配器作为匿名类,工作正常

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.有界顺序外时间戳提取器分配器不起作用

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 基于最大时间戳 所有以前的事件。也就是说,如果您没有收到新事件,水印 不会前进。相比之下,您的自定义实现 分配者与周期水印总是根据墙推进水印 时钟。

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

相关内容

  • 没有找到相关文章

最新更新