【问题标题】:Apache Flink: Trigger not firing when using BoundedOutOfOrdernessTimestampExtractorApache Flink:使用 BoundedOutOfOrdernessTimestampExtractor 时触发器未触发
【发布时间】:2018-01-11 04:33:28
【问题描述】:

使用 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();
  }
};

你觉得这些方法有什么不同吗?

【问题讨论】:

    标签: apache-flink flink-streaming


    【解决方案1】:

    从flink邮件list复制的答案:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多