使用 Apache Flink 我想创建一个按存储在 Kafka 事件中的时间戳排序的流式窗口。根据下面的文章,这没有实现。
https://cwiki.apache.org/confluence/display/FLINK/Time+and+Order+in+Streams
然而,这篇文章的日期是 2015 年 7 月,现在已经快一年了。此功能是否已实现,有人可以向我指出任何相关文档和/或示例。
使用 Apache Flink 我想创建一个按存储在 Kafka 事件中的时间戳排序的流式窗口。根据下面的文章,这没有实现。
https://cwiki.apache.org/confluence/display/FLINK/Time+and+Order+in+Streams
然而,这篇文章的日期是 2015 年 7 月,现在已经快一年了。此功能是否已实现,有人可以向我指出任何相关文档和/或示例。
Apache Flink 支持基于事件时间戳的流窗口。在 Flink 中,这个概念被称为事件时间。
为了支持事件时间,您必须从每个事件中提取时间戳(长值)。此外,您需要支持所谓的水印,这些水印是处理带有乱序时间戳的事件所必需的。
给定具有提取时间戳的流,您可以定义窗口总和,如下所示:
val stream: DataStream[(String, Int)] = ...
val windowCnt = stream
.keyBy(0) // partition stream on first field (String)
.timeWindow(Time.minutes(1)) // window in extracted timestamp by 1 minute
.sum(1) // sum the second field (Int)
开箱即用仍不支持按时间戳排序,但您可以根据元素中的时间戳进行窗口化。我们称之为事件时间窗口。请看这里:https ://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/windows.html 。