Flink/Blink 原理漫谈(四)window机制详解

本文详细介绍了Flink/Blink的window机制,包括Group by window中的Tumbling、Sliding和Session窗口,以及OVER Window中的ROWS和RANGE窗口。通过实例解释了各种窗口类型的特性和应用场景,帮助理解如何根据业务需求选择合适的窗口类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

系列文章目录

Flink/Blink 原理漫谈(零)运行时的组件

Flink/Blink 原理漫谈(一)时间,watermark详解

Flink/Blink 原理漫谈(二)流表对偶性和distinct详解

Flink/Blink 原理漫谈(三)state 有状态计算机制 详解

Flink/Blink 原理漫谈(四)window机制详解

Flink/Blink 原理漫谈(五)流式计算的持续查询实现 详解

Flink/Blink 原理漫谈(六)容错机制(fault tolerance)详解



window机制

Blink-1.x版本的window内容
有一些比较基本的group by概念我觉得不需要陈述了,主要需要介绍的是两个类型:group by window和over window。
Group by window中包含滚动窗口,滑动窗口,会话窗口;over window包含rows over window和range over window。

在开始介绍窗口之前,我想先进行一个总结:group by window都是仅仅支持时间窗口的(数据时间戳进行划分窗口),而over window支持时间窗口和计数窗口(按数据条数进行划分窗口),这个划分方式决定了在一些实际的业务问题上面,会产生很严重的影响,例如根据心跳日志实时计算上线人数和下线人数;如果使用group by window,flink自身的retract机制就会导致结果和预期不符,但是使用over window,问题就迎刃而解了。

Group by window

Tumbling window 滑动窗口

特点:左闭右开,窗口长度固定,无重叠。
在这里插入图片描述
窗口语法:

SELECT 
    [gk],
    [TUMBLE_START(timeCol, size)], 
    [TUMBLE_END(timeCol, size)], 
    agg1(col1), 
    ... 
    aggn(colN)
FROM Tab1
GROUP BY [gk], TUMBLE(timeCol, size)

• [gk] 决定了流是Keyed还是/Non-Keyed;
• TUMBLE_START - 窗口开始时间;
• TUMBLE_END - 窗口结束时间;
• timeCol - 是流表中表示时间字段;
• size - 表示窗口的大小,如 秒,分钟,小时,天;

真实示例:

SELECT  
    region,
    TUMBLE_START(accessTime, INTERVAL '2' MINUTE) 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值