我想使用apacheflink创建一个流窗口,它按kafka事件中存储的时间戳排序。根据下面的文章,这是没有实现的。https://cwiki.apache.org/confluence/display/flink/time+and+order+in+streams然而,这篇文章的日期是2015年7月,现在已经快一年了。是否实现了此功能,是否有人可以向我指出任何相关文档和/或示例。
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)
在文档(这里和这里)和一些博客文章(这里,这里,这里和这里)中详细解释了事件时间和窗口。
l7mqbcuq2#
按时间戳排序仍然不支持开箱即用,但您可以根据元素中的时间戳进行窗口处理。我们称之为事件时间窗口。请看这里:https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/windows.html.
2条答案
按热度按时间6ojccjat1#
apacheflink支持基于事件时间戳的流窗口。在flink中,这个概念称为事件时间。
为了支持事件时间,必须从每个事件中提取时间戳(长值)。此外,您还需要支持所谓的水印,这些水印是处理具有无序时间戳的事件所必需的。
给定一个具有提取的时间戳的流,您可以按如下方式定义一个加窗求和:
在文档(这里和这里)和一些博客文章(这里,这里,这里和这里)中详细解释了事件时间和窗口。
l7mqbcuq2#
按时间戳排序仍然不支持开箱即用,但您可以根据元素中的时间戳进行窗口处理。我们称之为事件时间窗口。请看这里:https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/windows.html.