Apache flink 什么&x2018;数据流的实际用途是什么

Apache flink 什么&x2018;数据流的实际用途是什么,apache-flink,Apache Flink,数据流的javadoc#assigningAscendingTimeStamps *为数据流中的元素分配时间戳,并定期创建 *表示事件时间进度的水印。 * *此方法是已知元素时间戳的数据流的快捷方式 *在每个平行流中单调上升。 *在这种情况下,系统可以自动完美地生成水印 *通过跟踪递增的时间戳。 此方法假定元素时间戳在每个并行流中单调递增。但在实践中,几乎没有任何流能够保证事件时间戳是按升序排列的 我想得出结论,这种方法永远不应该被使用,但我会问我是否遗漏了什么(例如,何时使用它)一般来说,

数据流的javadoc#assigningAscendingTimeStamps


*为数据流中的元素分配时间戳,并定期创建
*表示事件时间进度的水印。
*
*此方法是已知元素时间戳的数据流的快捷方式
*在每个平行流中单调上升。
*在这种情况下,系统可以自动完美地生成水印
*通过跟踪递增的时间戳。

此方法假定
元素时间戳在每个并行流中单调递增。但在实践中,几乎没有任何流能够保证事件时间戳是按升序排列的


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

一般来说,我同意,在实践中很少使用这种方法。例外情况如下:如果Kafka用作带有LogAppendTime的源,则时间戳按每个分区的顺序排列。然后,您可以使用AscendingTimestampExtractor在Flink[1]中使用每个分区的水印,并将获得非常理想的水印

干杯

康斯坦丁


[1]

在读取源代码
数据流#分配AscendingTimeStamps
后,它使用
AscendingTimestampExtractor
提取时间戳

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


因此,我认为这门课在不允许懒惰的情况下(水印可能会不断增长)在实践中可能会很方便。

感谢@sntrable提供了有用的答案!