使用 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)
文档( here 和 here )以及几篇博客文章( here 、 here 、 here 和 here )中详细解释了事件时间和窗口。
关于apache-flink - apache flink 窗口顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37809811/