Flink基础03-Flink window API

目录:
window概念
window类型
window API

window概念
在这里插入图片描述
一般真实的流都是无界的,怎样处理无界的数据?
可以把无限的数据流进行切分,得到有限的数据集进行处理,即得到有界流
窗口(window)就是将无限流切割为有限流的一种方式,它会将流数据分发到有限大小的桶(bucket)中进行分析

window类型
时间窗口(Time Window)
滚动时间窗口(Tumbling Windows)

在这里插入图片描述
将数据依据固定的窗口长度对数据进行切分
时间对齐,窗口长度固定,没有重叠
滑动时间窗口(Sliding Windows)
在这里插入图片描述
滑动窗口是固定窗口的更广义的一种形式,滑动窗口由固定的窗口长度和滑动间隔组成
窗口长度固定,可以有重叠
(股票预估)
会话窗口(Session Windows)
在这里插入图片描述
由一系列事件组合一个指定时间长度的timeout间隙组成,也就是一段时间没有接收到新数据就会生成新的窗口
特点:时间无对齐

计数窗口(Count Window)
滚动计数窗口
默认的 CountWindow 是一个滚动窗口,只需要指定窗口大小即可,当元素数量
达到窗口大小时,就会触发窗口的执行
滑动计数窗口
滑动窗口和滚动窗口的函数名是完全一致的,只是在传参数时需要传入两个参
数,一个是 window_size,一个是 sliding_size
window API
窗口分配器——window()方法
用.window()来定义一个窗口,然后基于这个window去做一些聚合或者其它处理操作。注意window()方法必须在keyBy之后才能使用。
Flink提供了更加简单的.timeWindow和.countWindow方法,用于定义时间窗口和计数窗口
在这里插入图片描述
窗口分配器(window assigner)
window()方法接收的输入参数是一个windowAssigner
windowAssigner负责将每条数据的数据分发到正确的window中
Flink提供了通用的windowAssigner
滚动窗口(tumbling window)
滑动窗口(sliding window)
会话窗口(session window)
全局窗口(global window)
在这里插入图片描述
在这里插入图片描述

窗口函数(window function)
window function 定义了要对窗口中收集的数据做的计算操作
可以分为两类
增量聚合函数(incremental aggregation functions)
每条数据到来就进行计算,保持一个简单的状态
ReduceFunction, AggregateFunction
全窗口函数(full window functions)
先把窗口所有数据收集起来,等到计算的时候会遍历所有数据
ProcessWindowFunction

在这里插入图片描述

在这里插入图片描述

附思维导图:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章