Flink - [04] 窗口(Windows)
题记部分
一、Flink中的窗口是什么
(1)一般真实的流都是无界的,怎样处理无界的数据?
(2)可以把无限的数据流进行切分,得到有限的数据集进行处理 —— 也就是得到有界流
(3)窗口(Window)就是将无限流切割为有限流的一种方式,它会将流数据分发到有限大小的桶(bucket)中进行分析。
二、窗口类型
(1)时间窗口(Time Window)
① 滚动时间窗口(tumbling time window):.timeWindow(Time.seconds(15))
② 滑动时间窗口(sliding time window):.timeWindow(Time.seconds(15),Time.seconds(5))
③ 会话窗口(session window):.window(EventTimeSessionWindows.withGop(Time.minutes(10)))
(2)计数窗口(Count Window)
① 滚动计数窗口(tumbling count window):.countWindow(5)
② 滑动计数窗口(sliding count window):.countWindow(10,2)
2.1、滚动窗口(Tumbling Windows)

2.2、滑动窗口(Sliding Windows)

2.3、会话窗口(Session Windows)

三、Window API
(1)窗口分配器 —— window()方法
(2)我们可以用.window()来定义一个窗口,然后基于这个window去做一些聚合或者其它处理操作。
(3)window()方法必须在keyBy之后才能使用。
(4)Flink提供了更加简单的.timeWindow和.countWindow方法,用于定义时间窗口和计数窗口。
val minTempPerWindow = dataStream
.map(r => (r.id,r.temperature))
.keyBy(_._1)
.timeWindow(Time.seconds(15))
.reduce((r1,r2) => (r1._1,r2.min(r2._2)))
四、窗口分配器
(1)window()方法接收的输入参数是一个WindowAssigner
(2)WindowAssigner负责将每条输入的数据分发到正确的window中
(3)Flink提供了通用的WindowAssigner
① 滚动窗口(tumbling window)
② 滑动窗口(sliding window)
③ 会话窗口(session window)
④ 全局窗口(global window)
五、窗口函数
window function定义了要对窗口中收集的数据做的计算操作,可以分为两类
(1)增量聚合函数(incremental aggregation functions)
- 每条数据到来就进行计算,保持一个简单的状态
- ReduceFunction、AggregateFunction
(2)全窗口函数(full window functions)
- 先把窗口所有数据收集起来,等到计算的时候会遍历所有数据
- ProcessWindowFunction
六、其他API
(1).trigger():触发器,定义window什么时候关闭,触发计算并输出结果;
(2).evitor():移除器,定义移除某些数据的逻辑;
(3).allowedLateness():允许处理迟到的数据
(4).sideOutputLateData():将迟到的数据放入侧输出流
(5).getSideOutput():获取侧输出流
— 业精于勤荒于嬉,行成于思毁于随 —
Flink - [04] 窗口(Windows)的更多相关文章
- DB 查询分析器 6.04 在 Windows 10 上的安装与运行展示
DB查询分析器 6.04 在 Windows 10 上的安装与运行展示 中国本土程序员马根峰(CSDN专访马根峰:海量数据处理与分析大师的中国本土程序员 http://www.csdn.net/art ...
- Ubunut18.04与Windows传输文件的方式
ubunut18.04与Windows传输文件的方式 开发环境:ubuntu18.04; 虚拟机:virtual box; 操作系统:Win10_64bits/专业版 在以前使用的ubuntu12.0 ...
- 【源码解析】Flink 滑动窗口数据分配到多个窗口
之前一直用翻滚窗口,每条数据都只属于一个窗口,所有不需要考虑数据需要在多个窗口存的事情. 刚好有个需求,要用到滑动窗口,来翻翻 flink 在滑动窗口中,数据是怎么分配到多个窗口的 一段简单的测试代码 ...
- Flink(八)【Flink的窗口机制】
目录 Flink的窗口机制 1.窗口概述 2.窗口分类 基于时间的窗口 滚动窗口(Tumbling Windows) 滑动窗口(Sliding Windows) 会话窗口(Session Window ...
- 关于在windows10中的vmware9.0里面安装的ubuntukylin15.04和windows共享目录的一些反思
关于在windows10中的vmware9.0里面安装的ubuntukylin15.04和windows共享目录的一些反思 一.遇到的问题 如题目所说,在windows的虚拟机中和windo ...
- Flink会话窗口测试
Flink会话窗口测试 一.测试结论: 1.会话窗口的间隔时间和水位线作用一样,表示输出现在时间 - 间隔时间之前所有未结算时间的数据,作用类似于水位线,但是和水位线开闭不一样. 2.会话窗口显示的数 ...
- ubuntu 16.04 和 windows 10系统安装mysql 允许远程访问 | mysql user guide on ubuntu 16.04 and windows 10
本文首发于个人博客https://kezunlin.me/post/36e618e7/,欢迎阅读! mysql user guide on ubuntu 16.04 and windows 10 Pa ...
- Flink的窗口处理机制(一)
一.为什么需要 window ? 在流处理应用中,数据是连续不断的,即数据是没有边界的,因此我们不可能等到所有数据都到了才开始处理.当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处 ...
- Flink Window窗口机制
总览 Window 是flink处理无限流的核心,Windows将流拆分为有限大小的"桶",我们可以在其上应用计算. Flink 认为 Batch 是 Streaming 的一个特 ...
- flink入门实例-Windows下本地模式跑SocketWordCount
一般情况下,开发大数据处理程序,我们希望能够在本地编写代码并调试通过,能够在本地进行数据测试,然后在生产环境去跑“大”数据. 一.nc工具 配置windows的nc端口,在网上下载nc.exe(htt ...
随机推荐
- 浅聊web前端性能测试
最近正好在做web前端的性能测试,这次就来聊聊关于这个的测试思路~ 首先从用户的思维去思考,关于web前端性能,用户最看重的是什么...... 其实就是下面三个点: 1. 加载性能(即页面加载时间+资 ...
- 【转载】用shell命令一步步获取Java版本号
https://blog.csdn.net/f20052604/article/details/100269768 1.打印java -version命令echo $(java -version)输出 ...
- 记住我 token保存到数据库
这里使用jpa+mysql <dependency> <groupId>org.springframework.boot</groupId> <artifac ...
- springboot~多节点应用里的雪花算法唯一性
雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是 ...
- C Primer Plus 第6版 第七章 编程练习参考答案
编译环境VS Code+WSL GCC 源码请到文末下载 . 注意:本章部分题目有些超纲(回用到函数调用),不理解的同学可以先去看一下后面的知识点和注释. /*第1题***************** ...
- Note - 两类容斥
\(\S1.\) 等价容斥 (乱取的名字.) 题目将组合对象构成的 "等价类" 进行了定义和限定. 我们往往无法计数 "等价类真的长这样" 的方案, 而 ...
- Java线程的通信
当需要多个线程共同完成一件任务,而且需要有规律的执行,那么多个线程之间需要一定的通信机制,可以协调他们的工作,以此实现多线程共同操作一份数据. 1 等待唤醒机制 这是一种线程间的协作机制,与争夺锁的竞 ...
- Gitblit 服务器IP变更
当Gitblit服务器的IP地址发生变化时,只需将项目中 ./git/config 文件中的 url改为新的IP即可.
- 0101-win10 jkd配置注意事项
更换新的电脑预装win10家庭版,根据常规方法配置jdk8后运行javac提示:不是内部或外部命令,也不是可运行的程序或批处理文件. 1 设置变量classpath时前面有个点(完成这一步后javac ...
- Svelte 最新中文文档翻译(5)—— 基础标记
前言 Svelte,一个非常"有趣".用起来"很爽"的前端框架.从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 ...