DataStream#assignAscendingTimestamps的实际用途是什么?



The javadoc for the DataStream#assignAscendingTimestamps

* 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 .但实际上,几乎没有流可以保证事件时间戳是按升序排列的。

我想得出结论,永远不应该使用这种方法,但我会问我是否错过了什么(例如,何时使用它(

总的来说,我同意,它在实践中很少使用。例外情况如下:如果 Kafka 用作具有 LogAppendTime 的源,则时间戳按每个分区的顺序排列。然后,您可以在 Flink [1] 中使用 AscendingTimestampExtractor 中的每分区水印,并且将获得相当最佳的水印。

干杯

康斯坦丁

[1] https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/connectors/kafka.html#kafka-consumers-and-timestamp-extractionwatermark-emission

在读取源代码DataStream#assignAscendingTimestamps后,它正在使用AscendingTimestampExtractor来提取时间戳。

AscendingTimestampExtractor将保留迄今为止看到的最大事件时间戳。如果事件时间顺序不正确,它将打印日志以警告违反单调升序的时间戳。

所以,我认为对于不允许懒惰的情况,这个类在实践中可能很方便(水印可能会继续增长(。

相关内容

  • 没有找到相关文章

最新更新