Flink window和time 窗口介绍

Flink WINDOW和TIME

Window 类型分类

  1. CountWindow
  2. TimeWindow
    1. TumblingWindow
    2. SlidingWindow
    3. SessionWindow

Time Window 类型分类

  1. EventTime
  2. IngestTime
  3. ProcessingTime

Window 详细介绍

1、window api 定义

datastream.keyBy(...).window(...).reduce()/apply()......

2、Window 类型图解

TumblingWindow 详细介绍

1、定义:将数据依据固定窗口长度对数据进行切割。

2、列子:

.timeWindow(Time.seconds(30)) // 每30秒计算一个时间窗口
.countWindow(100) // 统计每100个元素做计算

3、特点:时间对齐、窗口长度固定

4、适合场景:适合做BI统计等(做每个时间段的聚合计算)

SlidingWindow 详细介绍

1、定义: 窗口和窗口之间是重叠的,由滑动窗口航渡和滑动间隔组成

2、例子:

.countWindow(1000,10) //每10个元素,对过去1000元素计算
.timeWindow(Time.seconds(1000),Time.seconds(10))  //没每10秒,对过去1000秒的元素做计算

3、特点:窗口长度固定,有重叠

4、适合场景:可以做一些报警统计等。

SessionWindow 详细介绍

1、定义:理解类似于 WEB 的应用的session,一段时间内没有接收到数据就会生成新的窗口

2、例子

.window(SessionWindows.withGap(Time.minutes(10)))

3、特点:时间不对齐

4、适合场景:对线上用户的行为分析等

Time Window 详细介绍

1、首先先理解三种时间

1. EventTime 事件时间、日志时间
2. IngestTime 进入 Flink 的时间(进入datasource的时间)
3. ProcessingTime Flink 处理的时间

2、官方图解

3、 一些重要概念的理解

1. watermarket 水位线,决定着窗口是否触发,小于水位线的数据默认会丢弃
2. 对延迟数据的处理
1. 默认是丢弃
2. 可以通过设置延迟窗口触发,例如本来18:00触发的窗口 ,可以通过代码让其延迟两分钟计算(18:02)。
3. 延迟的数据可以通过sideOutputTag 落入hdfs或者hbase等。
4. watermarkt 分为两类基于Timer的,定时发送,核puncuated watermarks 基于某些事件触发watermark的生成和发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值