大数据(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与窗口
- WaterMark触发窗口计算
- 窗口允许迟到的数据
- 侧输出流(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ɑːrk | n. 水印;水位标志;vt. 在……上印水印(图案) |
gap | ɡæp | n. 缝隙,缺口;(时间上的)间隔 |
tumbling | ˈtʌmblɪŋ | n. 翻腾运动 |
tumble | ˈtʌmbl | v. 翻滚;n. 跌倒,滚落;(数量、价值)暴跌;混乱,杂乱;翻跟头 |
in order | 按顺序 | |
out of order | 次序颠倒 |
以上是关于大数据(9e)图解Flink窗口的主要内容,如果未能解决你的问题,请参考以下文章