传送门:Flink 系统性学习笔记
数据分析场景见证了批处理到流处理的演变过程。尽管批处理可以作为流处理的一种特殊情况来处理,但分析永无止境的流数据通常需要转变一种思维方式,并使用它自己的专门术语,例如,窗口、At-Least-Once 或者 Exactly-Once 处理语义。
对于刚刚接触流处理的人来说,这种思维方式的转变以及新的专业术语可能会让他们感到非常困惑。但是,Apache Flink 作为一个为生产环境而生的流处理器,具有易于使用并且表达能力很强的 API 来定义高级流分析程序。Flink 的 API 在数据流上有非常灵活的窗口定义,使其能在其他开源流处理器中脱颖而出。
在这篇文章中,我们主要讨论用于流处理的窗口的概念,介绍 Flink 的内置窗口,并说明其对自定义窗口语义的支持。
1. 什么是窗口?它们有什么用?
我们拿交通传感器的例子来说明,传感器每15秒统计通过某个位置的车辆数量。结果流看起来像如下所示:
如果现在我们想知道有多少辆车经过这个位置,我们只需简单的将每15秒统计的数量相加即可