簡體   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