大数据(9e)图解Flink窗口

Posted 小基基o_O

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据(9e)图解Flink窗口相关的知识,希望对你有一定的参考价值。

1、窗口的分类

  • 将 无界限的 数据 切分为 有界限的 数据
  • https://yellow520.blog.csdn.net/article/details/121288240

1.1、基于时间的窗口

基于时间的滑动窗口

.window(SlidingProcessingTimeWindows.of(Time.seconds(6),Time.seconds(3)))

基于时间的滚动窗口

.window(TumblingProcessingTimeWindows.of(Time.seconds(3)))

基于时间的会话窗口

.window(ProcessingTimeSessionWindows.withGap(Time.seconds(2)))

基于时间的全局窗口

.window(GlobalWindows.create())

1.2、基于事件个数的窗口

基于事件个数的滑动窗口

.countWindow(4,3)

基于事件个数的滚动窗口

.countWindow(4)

2、时间语义

时间语义直译说明
Event Time时间时间事件发生的时间
Process Time处理时间事件发生后,进入到程序(窗口)

事 件 时 间 < 处 理 时 间 事件时间<处理时间 <

3、WaterMark(水位线)

  • WaterMark,可译为水位线,用来标记水流的事件时间进度
  • WaterMark作为数据流的一部分在流动,并且携带一个时间戳t
    WaterMark(t)表示流的事件时间已经到达t,后续数据的事件时间应当大于t

有序流中的水印

乱序流中的水印

W(t)表示流的事件时间已经到达t,后续不应出现时间时间小于t的数据

3.1、WaterMark策略

3.2、WaterMark与窗口

  1. WaterMark触发窗口计算
  2. 窗口允许迟到的数据
  3. 侧输出流(sideOutput):处理关窗之后到达的数据

  • W a t e r M a r k ≥ 窗 口 结 束 时 间 WaterMark \\ge 窗口结束时间 WaterMark ,会触发窗口计算
  • 窗 口 结 束 时 间 < W a t e r M a r k < ( 窗 口 结 束 时 间 + 允 许 迟 到 时 间 ) 窗口结束时间 \\lt WaterMark \\lt (窗口结束时间 + 允许迟到时间) <WaterMark<(+),每进一条迟到的数据就计算一次
  • W a t e r M a r k ≥ ( 窗 口 结 束 时 间 + 允 许 迟 到 时 间 ) WaterMark \\ge (窗口结束时间 + 允许迟到时间) WaterMark(+) ,会关闭窗口

4、其它

窗口函数窗口关闭时,窗口函数就去处理窗口中的每个元素
ReduceFunction增量处理,高效
AggregateFunction增量处理,高效
ProcessWindowFunction函数执行前要在内部缓存窗口上所有的元素,低效
Keyed vs Non-Keyed Windows比较
keyed streams上使用窗口non-keyed stream上使用窗口
non-keyed stream上使用窗口并行度=1

多并行度下WaterMark的更新和传递

从所有分区中取事件时间最小的WaterMark来广播WaterMark

en🔉cn
watermarkˈwɔːtərmɑːrkn. 水印;水位标志;vt. 在……上印水印(图案)
gapɡæpn. 缝隙,缺口;(时间上的)间隔
tumblingˈtʌmblɪŋn. 翻腾运动
tumbleˈtʌmblv. 翻滚;n. 跌倒,滚落;(数量、价值)暴跌;混乱,杂乱;翻跟头
in order按顺序
out of order次序颠倒

以上是关于大数据(9e)图解Flink窗口的主要内容,如果未能解决你的问题,请参考以下文章

大数据(9e)图解Flink窗口

大数据(9e)图解Flink窗口

大数据(9e)图解Flink窗口

大数据(9e)Flink侧输出流

大数据(9e)Flink侧输出流

大数据(9e)Flink定时器