Flink水印:通过实现WatermarkGenerator发送水印的频率



我在官方指南中看到了下面的例子。

public class BoundedOutOfOrdernessGenerator implements WatermarkGenerator<MyEvent> {
private final long maxOutOfOrderness = 3500; 
private long currentMaxTimestamp;
@Override
public void onEvent(MyEvent event, long eventTimestamp, WatermarkOutput output) {
currentMaxTimestamp = Math.max(currentMaxTimestamp, eventTimestamp);
}
@Override
public void onPeriodicEmit(WatermarkOutput output) {

output.emitWatermark(new Watermark(currentMaxTimestamp - maxOutOfOrderness - 1));
}
}

允许的最大延迟为3.5秒。这是否意味着这将每3.5秒发送一个水印?如果不是,我不明白onEvent实现中时间戳比较的意义是什么

BoundedOutOfOrdernessGeneratoronEvent方法正在跟踪流中迄今为止看到的最大时间戳。基于流最多为maxOutOfOrderness的假设,在看到值为currentMaxTimestamp的时间戳后,我们假设时间戳小于currentMaxTimestamp - maxOutOfOrderness - 1的所有事件现在都应该已经到达。

autoWatermarkInterval毫秒调用一次onPeriodicEmit,默认情况下为200毫秒。

CCD_ 9确保CCD_。

相关内容

  • 没有找到相关文章