flink批处理-时间和窗口

流处理 :流处理是对连续产生的实时数据进行即时处理的技术,数据以事件流的形式逐条(flink)或按小批次(spark)处理,无需等待完整数据集就绪。
批处理 :批处理是对静态数据集按固定批次(如每小时/每天)进行离线处理的技术,遵循"先存储后处理"模式。
有界流 :有界流:具有明确的开始和结束点(如静态文件、数据库表)。有界流处理通常被称为批处理。
无界流:只有开始点,数据持续产生无终止(如Kafka消息流、IoT传感器数据)。

flink通过划定一段时间范围(时间窗),对在这范围内的数据进行处理,就是所谓的窗口计算。flink通过这种方式,实现数据的批处理。

窗口和时间往往是分不开的,所以需要了解flink中的时间语义和窗口的概念。

Flink的时间语义和窗口机制是流处理的核心组件,其设计原理和应用方式如下:

一、时间语义

1.事件时间(Event Time)‌

数据产生时自带的时间戳,需配合水位线(Watermark)处理乱序事件,适用于需要精确时间戳的场景

2.处理时间(Processing Time)‌

算子本地系统时间,延迟低但结果不可重现,适用于实时性要求高的场景

3.摄入时间(Ingestion Time)‌

数据进入Flink Source的时间。

二、窗口类型

1. 按驱动方式

‌时间窗口‌:基于时间范围划分,包括滚动、滑动、会话三种子类型。

‌计数窗口‌:基于数据条数划分,与时间无关。

2. 按分配规则

类型 特点 示例场景
滚动窗口 固定长度、无重叠(如每小时统计) 日活用户统计
滑动窗口 固定长度、可重叠(如每5分钟统计近1小时) 实时监控报警
会话窗口 动态间隙触发(用户无操作后关闭) 用户行为分析
全局窗口 需自定义触发器(如批处理) 全量聚合计算

三、关键机制

‌1.水位线(Watermark)

用于处理事件时间乱序。

2.窗口函数

增量聚合(ReduceFunction)

全量计算(ProcessWindowFunction)

3.迟到数据处理

通过侧输出流(Side Output)或允许延迟(Allowed Lateness)保障结果准确性

复制代码
// 事件时间滑动窗口
dataStream
  .assignTimestampsAndWatermarks(WatermarkStrategy
    .<Event>forBoundedOutOfOrderness(Duration.ofSeconds(5)))
  .keyBy(Event::getUserId)
  .window(SlidingEventTimeWindows.of(Time.seconds(30), Time.seconds(5)))
  .aggregate(new CustomAggregate());
相关推荐
天天爱吃肉82182 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车
Elastic 中国社区官方博客3 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
abcy0712133 小时前
storm核心实时机制
大数据·storm
灵机一物3 小时前
合伙制律所分红和提成律师个税怎么合规优化?
大数据·人工智能
Elastic 中国社区官方博客6 小时前
如何使用 OpenTelemetry 对你的搜索 API 进行埋点,并使用 ES|QL 对其进行查询
大数据·功能测试·elasticsearch·搜索引擎·全文检索·可用性测试
Xzaveir_7777 小时前
OPPO、vivo、荣耀号码认证:多终端拨测矩阵与异常复现
大数据·网络·科技·矩阵·产品经理·ai-native
老徐聊GEO7 小时前
亲测有效的AI品牌检测公司案例分享
大数据·人工智能·python
韭菜学长7 小时前
科技型中小企业如何申请政府补贴?申报指南
大数据·人工智能
延凡科技7 小时前
智慧燃气解决方案:管道煤气监管应用管理系统(三维GIS+IoT+大数据落地实战)
大数据·人工智能·科技·物联网·安全
imbackneverdie8 小时前
知网官宣:禁止 AI 列为论文署名作者,标注 Gemini、DeepSeek 等 AI 为作者的稿件统一下架
大数据·人工智能·ai·职场和发展·aigc·科研·高校