ApacheFlink窗口命令

w41d8nur  于 2021-06-25  发布在  Flink
关注(0)|答案(2)|浏览(296)

我想使用apacheflink创建一个流窗口,它按kafka事件中存储的时间戳排序。根据下面的文章,这是没有实现的。
https://cwiki.apache.org/confluence/display/flink/time+and+order+in+streams
然而,这篇文章的日期是2015年7月,现在已经快一年了。是否实现了此功能,是否有人可以向我指出任何相关文档和/或示例。

6ojccjat

6ojccjat1#

apacheflink支持基于事件时间戳的流窗口。在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)

在文档(这里和这里)和一些博客文章(这里,这里,这里和这里)中详细解释了事件时间和窗口。

l7mqbcuq

l7mqbcuq2#

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

相关问题