DataStream#assignAscendingTimestamps的Javadoc
* Assigns timestamps to the elements in the data stream and periodically creates
* watermarks to signal event time progress.
*
* This method is a shortcut for data streams where the element timestamp are known
* to be monotonously ascending within each parallel stream.
* In that case, the system can generate watermarks automatically and perfectly
* by tracking the ascending timestamps.
此方法假定that the the element timestamp are known to be monotonously ascending within each parallel stream
。但是实际上,几乎没有流可以保证事件时间戳按升序排列。
我想得出一个结论:永远不要使用此方法,但是我会问我是否错过了某些东西(例如何时使用它)
答案 0 :(得分:2)
通常,我同意,它很少在实践中使用。以下是一个例外:如果将Kafka用作LogAppendTime的源,则按分区顺序排列时间戳。然后,您可以将Flink [1]中的按分区水印与AscendingTimestampExtractor一起使用,并且将具有非常理想的水印。
干杯
康斯坦丁
答案 1 :(得分:0)
阅读源代码DataStream#assignAscendingTimestamps
后,它正在使用AscendingTimestampExtractor
提取时间戳。
AscendingTimestampExtractor
将保持迄今为止最大的事件时间戳。如果事件时间不正常,它将打印日志以警告违反单调递增的时间戳。
因此,我认为此类在实践中可能很方便,因为这种情况不允许懒惰(水印可能会不断增长)。