Flink-Window介绍

一.简介

Flink认为Batch是Streaming的一个特例,所以Flink底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从Streaming到Batch的一个桥梁,Flink提供了非常完善的窗口的机制,这是我认为的Flink最大亮点之一(其他的亮点包括消息乱序处理和checkpoint机制)。本文介绍流处理中窗口概念。

二.Window

在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。

窗口可以是时间驱动(Time Window,例如:每30秒钟),也可以是数据驱动(Count Window,例如:每一百个元素)。一种经典的窗口分类可以分成:翻滚窗口(Tumbing Window,无重叠),滚动窗口(Sliding Window,有重叠),会话窗口(Session Window,活动间隙)。

举了具体场景来形象地理解不同窗口概念,假设,淘宝网会记录每个用户每次购买的商品个数,我们要做的是统计不同窗口中用户购买商品的总数。

posted @ 2020-10-03 17:59  Dlimeng  阅读(8)  评论(0)    收藏  举报  来源