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 ...
随机推荐
- 零基础学习人工智能—Python—Pytorch学习(十三)
前言 最近学习了一新概念,叫科学发现和科技发明,科学发现是高于科技发明的,而这个说法我觉得还是挺有道理的,我们总说中国的科技不如欧美,但我们实际感觉上,不论建筑,硬件还是软件,理论,我们都已经高于欧美 ...
- [AGC029D] Grid game题解
这题很显然可以用贪心来解. 由于先手不动一定会让局数更少,所以先手要能动就动. 而后手一定是希望他的石子可以撞到一个障碍物上,这样先手就无法移动了,后手就可以让局数更少. 因为先手一定会能动就动,所以 ...
- 升级到 .NET Core 3.1
微软升级的频率有点快,转眼 .NET Core 升级到 3.1 版了,这是一个长期支持版本,意味着 .NET Core 正式进入成熟期. 不过,对于开发人员来说,你的项目又需要迁移了. 升级项目文件 ...
- CompilerGenerated与GeneratedCode区别
前言 最近在捣鼓代码生成器,基于 Roslyn,我们可以让生成器项目生成我们的目标 C# 代码,这个也是MVVM Toolkit的实现方式,在查看生成代码的过程中,我们经常会遇到一些特殊的特性,如 G ...
- Python 在Excel单元格中应用数据条
在Excel中添加数据条是一种数据可视化技巧,它通过条形图的形式在单元格内直观展示数值的大小,尤其适合比较同一列或行中各个单元格的数值.这种表示方式可以让大量的数字信息一目了然.本文将介绍如何使用Py ...
- Qt开源作品29-NTP服务器时间同步
一.前言 很多软件都有时间同步的功能,尤其是Qt在嵌入式设备上的,有时候还有很多是没有UI界面的程序,而硬件上有个时钟,时间久了难免没有电,需要从服务器来同步时间来保证本地的时间是正确的,不然本地记录 ...
- [转]使用navicat将excel文件导入mysql数据库
excel: 注: 1.mysql里建立一张跟excel一样的表结构的表(包含id) 2.excel最好没有任何格式,只是纯值,不然会出现导入不了的错误 ----------------------- ...
- COCI 2024/2025 #3
T1 P11474 [COCI 2024/2025 #3] 公交车 / Autobus 愤怒,从红升橙足以说明其恶心,考场上调了半小时才过. 这道题的车能够开 \(24\) 小时,并且他能从前一天开到 ...
- [炼丹术]YOLOR目标检测训练模型学习总结
YOLOR目标检测训练模型学习总结 性能测试 python test.py --data data/cocoaml --img 320 --batch 8 --conf 0.001 --iou 0.6 ...
- 【狂神说Java】Java零基础学习笔记-预科
[狂神说Java]Java零基础学习笔记-预科 预科01:学习准备:博客 博客,英文名为Blog,它的正式名称为网络日记 为什么要写博客? 需要总结和思考.有时候我们一直在赶路,却忘了放慢脚步 提升文 ...