一、窗口简介
1. Flink窗口分为CountWindow和TimeWindow
2. CountWindow按照指定的数据条数生成一个 Window,与时间无关
3. TimeWindow按时间生成window, 可分为Tumbling Window(滚动窗口)、Sliding Window(滑动窗口)和Session Window(会话窗口)
二、窗口类型
1. 滚动窗口(Tumbling Window)
时间对齐、窗口长度固定、窗口不可重叠
2. 滑动窗口(Sliding Window)
时间对齐、窗口长度固定、窗口可重叠
3. 会话窗口(Session Window)
配置Session窗口需要指定Session间隔,间隔内没有元素到来,窗口关闭,新窗口建立。窗口长度不固定
三、Window API
1. TimeWindow滚动窗口
默认按ProcessingTime进行窗口划分
DataStream<Tuple2<String, Double>> minTempPerWindowStream = dataStream.map(new MapFunction>() {
@Override
public Tuple2 map(SensorReading value)throws
Exception {
return new Tuple2<>(value.getId(), value.getTemperature());
}
})
.keyBy(data -> data.f0)
.timeWindow( Time.seconds(15))
.minBy(1);