apache-flink - DataStream#assignAscendingTimestamps 的实际用途是什么

标签 apache-flink

DataStream 的 javadoc#assignAscendingTimestamps

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

此方法假设已知元素时间戳在每个并行流中单调上升。但实际上,几乎没有流可以保证事件时间戳按升序排列。

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

最佳答案

总体上我同意,但在实践中很少使用它。异常(exception)情况如下:如果使用 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

关于apache-flink - DataStream#assignAscendingTimestamps 的实际用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56912526/

相关文章:

java - Kafka - 忽略获取的记录

java - 如何在 Flink 中获取另一份作业的作业结果?

scala-ide - Flink Scala API "not enough arguments"

java - 非法的反射访问操作会阻止程序运行吗?

java - 在 flink yarn 集群上通过 maven 运行包含配置的 Java Jar

logback - Flink 日志记录限制 : How to pass logging configuration to a flink job

python - Apache Flink : Kafka connector in Python streaming API, "Cannot load user class"

apache-flink - Apache Flink : Enrich stream with data from external/blocking call

java - 在 Apache Flink 中从 SQL 数据库读取 DataSet 时找不到 JDBC 驱动程序

timer - Apache Flink - 如果 x 分钟没有收到数据,则发送事件