Flink 窗口算子 -6-8
窗口算子
- 窗口算子提供了一种基于有限大小的桶对事件进行分组,并对这些桶中有限大小的数据进行计算 
定义窗口算子
- 用于键值分区窗口的算子可以并行计算 
- 用于非键值分区窗口只能单线程计算 
新建窗口需要2个窗口组件
- 窗口分配器:用于决定输入流中元素该如何划分窗口的分配器,对于键值分区窗口会产生WindowedStream,非键值分区则是AllWindowedStream 
- 窗口函数:一个用于处理分配到窗口中元素的窗口函数 
内置窗口分配器
- 时间窗口和基于数量的窗口 
- 基于数量的窗口会按照元素到达窗口的顺序以固定数量进行分组,不确定性,需要自定义触发器丢弃不完整或过期数据。 
- 每个时间窗口都有一个开始时间戳和一个结束时间戳 
- 所有内置窗口分配器,都提供一个默认触发器,一旦事件超过窗口结束时间,就会触发窗口计算。 
- 窗口会随着系统首次为其分配元素而窗口 
- Flink用于不会对空窗口执行计算 
- 内置窗口类型为:TimeWindow 
- 两个时间戳的时间区间左闭右开 
滚动时间窗口
- TumblingEventTimeWindows 
- TumblingProcessingTimeWindows 
- 只接受一个参数:以时间单元表示窗口大小 
- 使用of(Time size)方法指定时间大小 
- timeWindow(Time size)简写 
滑动时间窗口
- 滑动间隔小会出现元素重叠 
- 滑动间隔大,会出现丢失元素 
会话窗口
- EventTimeSessionWindows.withGap(Time size) 
- ProcessingTimeSessionWindows.withGap(Time size) 












 
    
评论