【问题标题】:apache flink window orderapache flink窗口顺序
【发布时间】:2016-06-14 10:46:19
【问题描述】:
【问题讨论】:
标签:
apache-flink
flink-streaming
【解决方案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)中有详细说明。