深入解读 Flink SQL 1.13

本文深入解读Flink SQL 1.13版本,重点介绍了FLIP-145支持的Window TVF,包括Cumulate Window和性能优化,以及FLIP-162关于时区和时间函数的修正,增强了Hive语法兼容性和SQLClient的功能,并展望了Flink 1.14的规划。

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

深入解读 Flink SQL 1.13

最近一直在努力学习Flink,刚刚好社区发布1.13版本,学习之余协助社区发布了一篇文章,欢迎各位看看
文章介绍:Flink1.13版本于最近发布了,里面有比较多新的Feature和特性,今天就由我和徐榜江老师带着大家一起去探寻这些新特性,还有一些改进。徐榜江老师目前就职于阿里巴巴 Flink-SQL引擎团队,主要负责社区的SQL引擎模块开发。这篇文章一共会分为4个部分,首先我们会先给大家介绍Flink-SQL在1.13版本上面整体的一个改动,还有一些核心Feature的解读和重要改进,最后就是总结以及Flink1.14一些功能提前和大家剧透。

作者:徐榜江 (Apache Flink PMC)
整理:陈政羽(Apache Flink China 社区志愿者)

Flink SQL 1.13概览

在这里插入图片描述

Flink-SQL 1.13是一个社区大版本,解决的issue在1000+以上,通过图中我们可以看到解决的问题大部分是关于Table-SQL模块,一共400多个issue占了37%左右,主要是围绕了其中的5个Flip进行展开,稍后文章我们也会根据这5个进行描述,它们分别是

  • FLIP-145: 支持 Window TVF
  • FLIP-162: SQL层面把时区和时间函数进行修正优化
  • FLIP-152: 提升 Hive 语法兼容性
  • FLIP-163: 改进 SQL Client,使得生产基本可用
  • FLIP-136: 增强 DataStream 和 Table 的转换的增强

下面我们来通过逐个Feature进行解读

FLIP-145:支持Windows TVF

在腾讯、阿里、字节等内部已经有这个功能,这次社区在Flink1.13我们推出了TVF的相关支持和相关优化。下面将从 Window TVF 语法、近实时累计计算场景、 Window 性能优化、多维数据分析进行解剖这个新功能

Window TVF 语法

在1.13 前,是一个特殊的GroupWindowFunction

SELECT 
	TUMBLE_START(bidtime,INTERVAL '10' MINUTE),
  TUMBLE_END(bidtime,INTERVAL '10' MINUTE),
  TUMBLE_ROWTIME(bidtime,INTERVAL '10' MINUTE),
  SUM(price)
FROM MyTable
GROUP BY TUMBLE(bidtime,INTERVAL '10' MINUTE)

在1.13时候我们对它进行了Table-Valued Function的语法标准化

SELECT window_start,window_end,window_time,SUM(price) 
FROM TABLE(TUMBLE(TABLE mytable,DESCRIPTOR(biztime),INTERVAL '10' MINUTE))
GROUP BY window_start,window_end

通过上面的观察,我们可以发现TVF 无需一定要跟在GROUP BY 语法后面,在Window TVF 基于关系代数 ,使得更加标准化。划分窗口只需要TVF,无需再次进行GROUP BY的相关操作;TVF扩展性和表达能力更强,可以自定义TVF(例如topn)

在这里插入图片描述

在这里插入图片描述

以上例子就是TVF做一个窗口划分,只需要把数据划分到窗口无需聚合,如果后续需要聚合只需要GROPBY即可。对于批的用户操作是很自然的一件事,而不需要像1.13之前做一定需要一个特殊的GROUP Function

目前WINDOW TVF 支持TUMBLE,HOP WINDOW;新增了CUMULATE WINDOW,SESSION WINDOW 预计在1.14支持

Cumulate Window

在这里插入图片描述

以图里面一个宽度为单位,第一个window统计一个宽度的数据,第二个window是想统计第一+第二个宽度的数据,第三个window想统计 1 2 3 宽度的数据。这个就是累积计算场景UV。例如:UV大盘曲线:每隔10分钟统计一次当天累积用户uv。在Flink1.13之前,我们需要做这个场景我们一般做法如下

INSERT INTO cumulative_uv
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值