Flink之窗口函数以及watermark详解

1 Time与Window

1.1 Flink中涉及的时间

- **Event Time**:是事件创建的时间。它通常由事件中的时间戳描述,例如采集的日志数据中,每⼀条⽇志都会记录⾃己的生成时间,Flink通过时间戳分配器访问事件时间戳。- **Ingestion Time**:是数据进入Flink的时间。- **Processing Time**:是每⼀个执行基于时间操作的算子的本地系统时间,与机器相关,默认的时间属性就是Processing Time。 ## 1.2 Window

1.2.1 Window描述

streaming流式计算是⼀种被设计用于处理⽆限数据集的数据处理引擎,而⽆限数据集是指一种不断增长的本质上无限数据集,⽽window是一种切割无限数据为有限块进行处理的手段。Window是无限数据流处理的核心,Window将⼀个⽆限stream拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。

1.2.2 Window类型

Window可以分成两类:

  • CountWindow:按照指定的数据条数生成⼀个Window,与时间无关。
  • -TimeWindow:按照时间生成Window。
    对于TimeWindow,可以根据窗⼝实现原理的不同分成三类:滚动窗⼝(Tumbling Window)、滑动 窗⼝(Sliding Window)和会话窗⼝(Session Window)。
  • 滚动窗⼝(Tumbling Windows)
    将数据依据固定的窗⼝⻓度对数据进行切片。 特点:时间对⻬,窗口⻓度固定,没有重叠。 滚动窗⼝分配器将每个元素分配到⼀个指定窗⼝⼤小的窗口中,滚动窗口有一个固定的大小,并且不会出现重叠。例如:如果你指定了一个5分钟大小的滚动窗口,⼝口的创建如下图所示:
    在这里插入图片描述

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

  • 滑动窗⼝(Sliding Windows)
    滑动窗⼝是固定窗口的更⼴义的⼀种形式,滑动窗口由固定的窗口长度和滑动间隔组成。 特点:时间对齐,窗口长度固定,有重叠

滑动窗口分配器分配元件以固定长度的窗口。与翻滚窗口分配器类似,窗口大小窗口大小参数配置。附加的窗口滑动参数控制滑动窗口的启动频率。因此,如果幻灯片小于窗口大小,则滑动窗口可以重叠。在这种情况下,元素被分配给多个窗口。

例如,您可以将大小为10分钟的窗口滑动5分钟。有了这个,你每隔5分钟就会得到一个窗口,其中包含过去10分钟内到达的事件,如下图所示。

适⽤场景:对最近⼀个时间段内的统计(求某接口最近5min的失败率来决定是否要报警)。

  • 会话窗⼝(Session Windows)
    由⼀系列事件组合⼀个指定时间长度的timeout间隙组成,类似于web应用的session,也就是一段时间没有接收到新数据就会生成新的窗口。 特点:时间⽆对⻬。

会话窗口中按活动会话分配器组中的元素。会话窗口不重叠,没有固定的开始和结束时间,与翻滚窗口滑动窗口相反。相反,当会话窗口在一段时间内

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值