2

使用 Apache Flink 我想创建一个按存储在 Kafka 事件中的时间戳排序的流式窗口。根据下面的文章,这没有实现。

https://cwiki.apache.org/confluence/display/FLINK/Time+and+Order+in+Streams

然而,这篇文章的日期是 2015 年 7 月,现在已经快一年了。此功能是否已实现,有人可以向我指出任何相关文档和/或示例。

4

2 回答 2

2

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)

事件时间和窗口在文档(此处此处)和几篇博客文章(此处此处此处此处)中进行了详细说明。

于 2016-06-14T12:56:06.713 回答
0

开箱即用仍不支持按时间戳排序,但您可以根据元素中的时间戳进行窗口化。我们称之为事件时间窗口。请看这里:https ://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/windows.html 。

于 2016-06-14T14:10:24.197 回答