Flink-Window

Window类型:

滚动窗口(Tumbling Window)

  将数据依据固定的窗口长度对数据进行切分

  窗口长度固定(窗口依据时间或者数量划分),每个窗口数据没有重叠

滑动窗口(Sliding Window)

  滑动窗口是固定窗口的更广义的一种形式,滑动窗口由固定的窗口长度和滑动步长组成

  窗口长度固定,可以有重叠(一个数据可以属于几个窗口?窗口长度/窗口步长)

 会话窗口(Session Window)

  由一系列事件组合成一个指定时间长度的timeout间隙组成,也就是一段时间没有接收到新数据就会生成新的窗口

  只基于时间分窗口(没有基于数量的窗口)

  • 时间窗口  Time Window
    • 滚动时间窗口
    • 滑动时间窗口
    • 会话窗口
  • 计数窗口  Count Window
    • 滚动计数窗口
    • 滑动计数窗口

Window API

窗口分配器----window方法

我们可以用.window来定义一个窗口,然后基于这个window去做一个聚合或者其它处理操作。注意window方法必须在keyBy之后才能用

Flink提供了更简单的timeWindow和countWindow方法,用于定义时间窗口和计数窗口。

keyBy对数据进行分组,窗口分配器对分组后的数据进行分桶(数据要给哪个窗口),分桶后的数据调用窗口函数做计算操作。

window()方法接受的输入参数是一个WindowAssigner

WindowAssigner负责将每条输入的数据分发到正确的window中

Flink提供了通用的WindowAssigner

滚动窗口(Tumbling window)

滑动窗口(Sliding window)

会话窗口(Session window)

全局窗口(Global window)

窗口函数(Window function)

window function定义了要对窗口中收集的数据做的计算操作。

可以分为两类:

  增量聚合函数

    每条数据到来就进行计算,保持一个简单的状态

    

  全窗口函数

    先把窗口所有数据收集起来,等到计算的时候会遍历所有数据(统计百分比)

原文地址:https://www.cnblogs.com/Rabcheng/p/14152551.html