apache flink窗口顺序
Posted
技术标签:
【中文标题】apache flink窗口顺序【英文标题】:apache flink window order 【发布时间】:2016-06-14 10:46:19 【问题描述】:使用 Apache Flink 我想创建一个按存储在 Kafka 事件中的时间戳排序的流式窗口。根据下面的文章,这没有实现。
https://cwiki.apache.org/confluence/display/FLINK/Time+and+Order+in+Streams
但是,这篇文章的日期是 2015 年 7 月,现在已经快一年了。此功能是否已实现,有人可以指出任何相关文档和/或示例。
【问题讨论】:
【参考方案1】: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)中有详细说明。
【讨论】:
【参考方案2】:开箱即用仍不支持按时间戳排序,但您可以根据元素中的时间戳进行窗口化。我们称之为事件时间窗口。请看这里:https://ci.apache.org/projects/flink/flink-docs-master/apis/streaming/windows.html。
【讨论】:
以上是关于apache flink窗口顺序的主要内容,如果未能解决你的问题,请参考以下文章