当前位置: 首页 > news >正文

Flink中的窗口

一、窗口的概念

为了对无界数据流进行处理,Flink可以将数据流切分为数据块,每一个数据块就是所谓的窗口。窗口中两个重要的点:窗口的类型和窗口的处理函数

二、窗口的分类

按照驱动类型分类可以分为:时间驱动窗口和数量驱动窗口,简称为时间窗口和计数窗口。

(1)、时间窗口

时间窗口以时间点定义窗口的开始和结束。通俗来说就是“定点发车”。

(2)、计数窗口

计算窗口以窗口中的数据的数量为依据,当数据达到指定数量之后窗口截止。通俗来说就是“人齐发车”。

按照窗口分配数据的规则划分分为:滚动窗口、滑动窗口、会话窗口、全局窗口。

(1)、滚动窗口

滚动窗口中的数据是“首尾相连”的,每个窗口中的数据不会重复,且不会缺失。滚动窗口既可以基于时间来定,也可以基于数量来定。

(2)、滑动窗口

滑动窗口要看窗口的大小,但是更重要的是看窗口的步长。如果窗口的步长刚好等于窗口的大小的话就和滚动窗口一样;如果窗口的步长大于窗口的大小就会导致数据的丢失;如果窗口的步长小于窗口的大小时就会导致数据处理时的重复。

(3)、会话窗口

会话窗口就是会话双方建立起来的通道,这种窗口只能基于时间创立,不能基于数据数量来创立。会话窗口没有固定的结束时间,当相邻两个数据发送时间的间隔大于规定的会话间隔时会认为这不是同一个会话。

(4)、全局窗口

全局的窗口没有窗口的技术时间,需要靠触发器来对窗口中收集到的数据进行处理。

三、窗口操作

在实际的写代码的过程中,需要注意两个内容,一个就是窗口分配器(实际使用时的窗口的类型);一个是窗口函数。窗口分配器用于指定我用的是时间窗口还是计数窗口;是滚动窗口还是滑动窗口亦或是会话窗口。窗口函数就是对应的对窗口进行的处理操作。

(1)、窗口分配器

(2)、窗口函数

窗口函数也是分为两类:增量聚合函数和全窗口函数。增量聚合函数是每次来一条数据就计算一个,到窗口结束时输出执行结果。典型的增量聚合函数是ReduceFunction和AggregateFunction。全窗口函数就是对进入窗口的函数先不进行处理,在窗口结束时才进行处理。

http://www.lryc.cn/news/619275.html

相关文章:

  • HTML5 Canvas实现数组时钟代码,适用于wordpress侧边栏显示
  • 方法论基础。
  • 设计秒杀系统从哪些方面考虑
  • 从零开始:用PyTorch实现线性回归模型
  • 比特币与区块链:去中心化的技术革命
  • VUE2连接USB打印机
  • Pytorch FSDP权重分片保存与合并
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day3
  • 【Qt开发】常用控件(三) -> geometry
  • 疏老师-python训练营-Day44预训练模型
  • php7 太空船运算符
  • Linux 软件编程:文件IO、目录IO、时间函数
  • 适配安卓15(对应的sdk是35)
  • RxJava 在 Android 中的深入解析:使用、原理与最佳实践
  • 大牌点餐接口api对接全流程
  • 《吃透 C++ 类和对象(中):构造函数与析构函数的核心逻辑》
  • Ubuntu22.04轻松安装Qt与OpenCV库
  • 药房智能盘库系统的Python编程分析与实现—基于计算机视觉与时间序列预测的智能库存管理方案
  • 基于大数据spark的医用消耗选品采集数据可视化分析系统【Hadoop、spark、python】
  • 分段锁和限流的间接实现
  • 通信中间件 Fast DDS(一) :编译、安装和测试
  • 机器学习—— TF-IDF文本特征提取评估权重 + Jieba 库进行分词(以《红楼梦》为例)
  • CMake进阶: 使用FetchContent方法基于gTest的C++单元测试
  • LINUX812 shell脚本:if else,for 判断素数,创建用户
  • 【GESP】C++一级知识点之【集成开发环境】
  • TF-IDF:信息检索与文本挖掘的统计权重基石
  • [SC]如何使用sc_semaphore实现对共享资源的访问控制
  • 初识神经网络04——构建神经网络2
  • 【从零开始java学习|第四篇】IntelliJ IDEA 入门指南
  • Redis序列化配置类