Flink 1.10 设置时间特征为 IngestionTime 是否需要设置 assignTimestampsAndWatermarks?

Do I need to set assignTimestampsAndWatermarks if I set my time characteristic to IngestionTime in Flink 1.10?

如果我将时间特征设置为 IngestionTime,是否需要设置 assignTimestampsAndWatermarks?

假设我将流执行环境的时间特征设置为摄取时间如下

streamExecutionEnvironment.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime);

我需要打电话给 datastream.assignTimestampsAndWatermarks(AscendingTimestampExtractor) 吗?

我以为只有时间特征是事件时间,datastream.assignTimestampsAndWatermarks才是必须的。不?如果没有,我想知道如何在分布式环境中设置 AscendingTimestampExtractor ?有什么方法可以在没有任何分布式锁的情况下添加单调递增的 long(AscendingTimestampExtractor)?

不,使用摄取时间时不需要调用 assignTimestampsAndWatermarks。使用摄取时间,Flink 会自动分配时间戳和水印。

另外,在加水印的时候再也不用担心分布式锁了。每个本地实例根据其对本地流的了解在本地分配水印。对于 AscendingTimestampExtractor,时间戳在每个实例中单调递增就足够了。