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

实时数据开发 | 一文理解Flink窗口机制

窗口操作在流处理和批处理之间起到了桥梁的作用。

Flink引擎本质上是流式引擎,认为批处理是流处理的一个特例。因此,通过窗口将流数据划分为有限大小的集合,使得在这些有界的数据集上可以进行批处理风格的计算。
通过配置窗口的参数,如长度滑动间隔,可以精确地控制数据的聚合和计算频率,以满足各种业务需求。

组件

Flink的窗口操作内部实际上包含了三个组件来描述和定义一个窗口:WindowAssigner、Trigger和Evictor

  • Window Assigner 用来决定某个元素被分配到哪个/哪些窗口中去;
  • Trigger(触发器)决定了一个窗口何时能够被计算或清除,每个窗口都会拥有一个自己的 Trigger ;
  • Evictor(驱逐者)则在 Trigger 触发之后,并且在窗口被处理之前,剔除窗口中不需要的元素,其相当于一个过滤器。

类型:时间&数量

Flink支持两种主要类型的窗口:基于时间的窗口和基于数量的窗口。

  • 基于时间的窗口:这种窗口根据时间戳将数据流划分为不同的时间段。
    选择合适的窗口类型对于处理无限数据流和实现有效的实时分析至关重要。在Flink中,可以根据数据特性和业务需求选择不同的窗口类型:
    1. 滚动窗口:适合处理周期性的任务。是固定时间长度的窗口,不重叠地依次划分数据流。例如,每五分钟计算一次数据的平均值。
    2. 滑动窗口:用于需要更频繁更新结果的场景。滑动窗口有固定的长度和滑动间隔,允许窗口重叠,从而提供更细粒度的实时数据更新。例如,每五分钟滑动一次的十分钟窗口,可以每五分钟更新前十分钟的数据分析。
    3. 会话窗口:适合用于用户会话等不固定长度的窗口,自动根据空闲(或不活动)时间来划分窗口。这对于分析用户行为的非连续活动非常有效。
  • 基于数量的窗口:这种窗口依据流入元素的数量来划分数据。例如,每当接收到一定数量的数据元素后,就生成一个窗口进行处理。

在实际应用中,选择窗口时需考虑以下几点:

  • 数据的性质:是否有固定的时间间隔或需要实时更新。
  • 业务需求:是否需要精细的时间粒度及对结果的更新频率。
  • 性能影响:窗口的大小和类型会对系统的性能和资源消耗产生影响。

生命周期

从窗口生命周期来讲,只有当属于此窗口的第一个元素到达后,才会创建此窗口,当窗口结束时间到的时候(如果指定了窗口的允许延迟时间,还要加上此延迟时间),窗口被完全删除。窗口生命周期管理确保了流数据的有序处理,并在合适的时间点执行计算,使流处理高效且可预测。

Flink保证仅移除基于时间的窗口,而不移除其他类型(例如全局窗口等)。例如,某job 使用基于事件时间的窗口操作,假定使用5min 的翻滚窗口,并且允许延迟lmimn延迟,那么Flink将在 12:00 和12:05 之间并且当落人此间隔时间戳的第一个元素到达时创建此窗口,并将在watermark超过12:06 时将其删除。

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

相关文章:

  • MFC 自定义树控件:树节点的样式与交互
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-loss.py
  • 像素流送api ue多人访问需要什么显卡服务器
  • 字符型注入‘)闭合
  • 评分规则的建模,用户全选就是满分10分(分数可自定义), 选2个5分, 选2个以下0分
  • Elasticsearch与NLP的深度融合:文本嵌入与向量搜索实战指南
  • 4. STM32_定时器
  • Mysql 深度分页问题及优化方案
  • 前端性能优化技巧
  • taro使用createAsyncThunk报错ReferenceError: AbortController is not defined
  • Linux:systemd进程管理【1】
  • 【Maven】继承和聚合
  • 【线上问题记录 | 排查网络连接问题】
  • springboot车辆管理系统设计与实现(代码+数据库+LW)
  • 独家|京东调整职级序列体系
  • Arrays.copyOfRange(),System.arraycopy() 数组复制,数组扩容
  • Python学习37天
  • flask的第一个应用
  • 【论文格式】同步更新中
  • Java-GUI(登录界面示例)
  • 看华为,引入IPD的正确路径
  • 计算机毕业设计Spark+大模型知识图谱中药推荐系统 中药数据分析可视化大屏 中药爬虫 机器学习 中药预测系统 中药情感分析 大数据毕业设计
  • pcb线宽与电流
  • w~视觉~合集26
  • Qt支持RKMPP硬解的视频监控系统/性能卓越界面精美/实时性好延迟低/录像存储和回放/云台控制
  • 【Qt】图片绘制不清晰的问题
  • 2008年IMO几何预选题第3题
  • NAT拓展
  • Flink四大基石之State
  • Spacy小笔记:zh_core_web_trf、zh_core_web_lg、zh_core_web_md 和 zh_core_web_sm区别