Flink四大基石——1.window

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: Flink四大基石——1.window

1.为什么需要Window

在讲这个问题之前,我们先补充批处理和流处理的知识。

批处理:就是对历史数据/有界数据进行处理,如前一天/前7天/前2周/前1/3/6月,前1年…,批处理的任务特点是:跑完一次,就停止,就结束,等待下一次周期调度!而且批处理对于任务完成时间要求不高!一般几个小时内跑完都能够接受!

流处理:就是实时的源源不断到来的流式数据/无界数据进行处理!如:实时统计最近5s/1min/1h的数据,特点是程序启动之后会一直运行,等待数据到来!除非遇到异常或手动停止!

那么为什么需要Window呢,因为我们需要在实时数据中统计有边界的数据。之前说过Flink是专门做流式数据/无界数据处理的,可以一直处理源源不断到来的实时数据!

如:实时的统计双十一交易额!

但是在实际开发中,对于流式数据处理也有这样的需求,

如:每隔5s中统计一次最近1min的数据!

如:每隔1min统计一次最近1小时的热搜排行榜!

而上面的这种需求其实也是属于实时领域的!

只不过看上去像是在每隔一段时间处理一次之前一段时间的离线数据而已!

但是整个的实时处理程序并没有停止! 所以该需求还是实时的!

那么该如何实现这样的看上去像是离线的实时需求呢?

所以这里要学习新的技术来解决!----window技术,window窗口的特点就是有边界。

2.window如何解决上面的需求

window窗口需要设置窗口大小size和窗口滑动间隔slide,通过window窗口实现上面的需求。

情况1:

窗口的大小= 5s

窗口的滑动间隔 = 5s

那么就实现了每隔5s统计最近5s的实时数据!

情况2:

窗口的大小= 1min

窗口的滑动间隔 = 5s

那么就实现了每隔5s统计最近1min的实时数据!

3.window窗口的五种类型

基于时间的滚动窗口tumbling-time-window:根据时间划分窗口,窗口大小size = 滑动间隔slide,用的较多

基于时间的滑动窗口sliding-time-window:根据时间划分窗口,窗口大小size > 窗口滑动间隔,用的较多

基于数量的滚动窗口tumbling-count-window:根据数量划分窗口,窗口大小size = 窗口滑动间隔slide,用的较少

基于数量的滑动窗口sliding-count-window:根据数量划分窗口,窗口大小size > 窗口滑动间隔slide,用的较少

Flink还支持一个特殊的窗口:Session绘画窗口,需要设置一个会话超时时间,如设置会话超时时间为30s,则表示30s内没有数据到来,则触发上个窗口的计算。

备注:当size < slide时,会发生数据丢失,,如每隔15s统计最近10s的数据,那么中间5s的数据会丢失。,所以开发中不会使用。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
目录
打赏
0
0
0
0
42
分享
相关文章
Flink 四大基石之窗口(Window)使用详解
在流处理场景中,窗口(Window)用于将无限数据流切分成有限大小的“块”,以便进行计算。Flink 提供了多种窗口类型,如时间窗口(滚动、滑动、会话)和计数窗口,通过窗口大小、滑动步长和偏移量等属性控制数据切分。窗口函数包括增量聚合函数、全窗口函数和ProcessWindowFunction,支持灵活的数据处理。应用案例展示了如何使用窗口进行实时流量统计和电商销售分析。
310 28
Flink 四大基石之 Checkpoint 使用详解
Flink 的 Checkpoint 机制通过定期插入 Barrier 将数据流切分并进行快照,确保故障时能从最近的 Checkpoint 恢复,保障数据一致性。Checkpoint 分为精确一次和至少一次两种语义,前者确保每个数据仅处理一次,后者允许重复处理但不会丢失数据。此外,Flink 提供多种重启策略,如固定延迟、失败率和无重启策略,以应对不同场景。SavePoint 是手动触发的 Checkpoint,用于作业升级和迁移。Checkpoint 执行流程包括 Barrier 注入、算子状态快照、Barrier 对齐和完成 Checkpoint。
222 20
Flink 四大基石之 Time (时间语义) 的使用详解
Flink 中的时间分为三类:Event Time(事件发生时间)、Ingestion Time(数据进入系统时间)和 Processing Time(数据处理时间)。Event Time 通过嵌入事件中的时间戳准确反映数据顺序,支持复杂窗口操作。Watermark 机制用于处理 Event Time,确保数据完整性并触发窗口计算。Flink 还提供了多种迟到数据处理方式,如默认丢弃、侧输出流和允许延迟处理,以应对不同场景需求。掌握这些时间语义对编写高效、准确的 Flink 应用至关重要。
153 21
大数据-120 - Flink Window 窗口机制-滑动时间窗口、会话窗口-基于时间驱动&基于事件驱动
大数据-120 - Flink Window 窗口机制-滑动时间窗口、会话窗口-基于时间驱动&基于事件驱动
139 0
大数据-119 - Flink Window总览 窗口机制-滚动时间窗口-基于时间驱动&基于事件驱动
大数据-119 - Flink Window总览 窗口机制-滚动时间窗口-基于时间驱动&基于事件驱动
249 0
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
大数据-122 - Flink Time Watermark Java代码测试实现Tumbling Window
66 0
大数据-115 - Flink DataStream Transformation 多个函数方法 FlatMap Window Aggregations Reduce
大数据-115 - Flink DataStream Transformation 多个函数方法 FlatMap Window Aggregations Reduce
67 0
Flink四大基石——4.Checkpoint容错机制
Flink四大基石——4.Checkpoint容错机制
142 1