flink全球?

zqdjd7g9  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(277)

支持我有两个不同的数据流,使用事件时间。

class TSWM implements AssignerWithPunctuatedWatermarks<POJO> {
   long maxTS = Long.MIN_VALUE;
   @Override
  public Watermark checkAndGetNextWatermark(POJO event, long l) {
    maxTS = Math.max(maxTS, event.TS);
    return new Watermark(getMaxTimestamp());
  }

  @Override
  public long extractTimestamp(POJO event, long l) {
    maxTS = Math.max(maxTS, event.TS);
    return event.TS;
  }
}

DataStream ds1 = ... .assignTimestampsAndWatermarks(new TSWM()) DataStream<POJO> ds2 = ... .assignTimestampsAndWatermarks(new TSWM()) 所以现在我有两个不同的数据流,我的问题是,时间戳和水印是独立于每个数据流的还是一个集中的时钟?
我正在做一些其他复杂的窗口和重新分配的时间戳和水印,它不产生窗口数据,所以我觉得水印或时间戳是一个问题。

x3naxklr

x3naxklr1#

从某种意义上说,水印是“全球性的”,但要注意以下几点:
水印的每个并行示例都有自己的水印
当一个操作符连接两个流(例如,一个协处理函数)时,它的水印是传入水印的最小值
与Kafka你可以安排每个Kafka分区水印

相关问题