深入解读 Flink SQL 1.13功能点,不入坑血亏!
发布于 2021-09-11 20:39
每天1次,打卡阅读
更快更全面获取大数据技术博客
大家好,我是土哥,自从Flink 社区更新Flink1.13版本之后,土哥作为一名Flink开发人员,对Flink SQL 1.13进行了探索,接下来将以四个部分对新增的内容进行展开介绍。
1、Flink SQL 1.13 概述
在整个Flink 1.13版本下,来自全球各地的开发人员共解决ISSUES 1000+,提交PR 200+,针对Flink Table/ SQL模块,解决ISSUES 400+ 。
2、核心feature解读
Window TVF 包含四部分内容:
Window TVF 语法
近实时累计计算
Window 性能优化
多维数据分析
(1) Window TVF 语法
1.13前,是一个特殊的GroupWindowFunction;
1.13 用Table-Valued Function 进行了语法标准化;
完整的关系代数表达
输入是一个关系,输出也是一个关系
每个关系对应一个数据集
支持TUMBLE,HOP WINDOW
SESSION WINDOW 预计1.14支持
新增CUMULATE WINDOW
案例: 每10分钟统计一次当天的累计用户UV
结果更精准
追数据时,曲线不会跳变
内存优化:通过内存预分配 ,缓存Window的数据,通过Window WaterMark触发计算。
切片优化:将Window切片,尽可能复用已计算结果,如hop window,cumulate window。
算子优化:window支持local-global 优化,同时支持 count(distinct)自动解热点优化。
迟到数据:支持迟到数据计算到后续分片,保证数据准确性。
开源 Benchmark (Nexmark)测试,普适性能有2X提升
在 count(distinct)场景会有更好的性能提升
GROUPING SETS
ROLLUP
CUBE
支持Window Top-N
2、FLIP-162: 时区和时间函数
时区和时间函数包含四部分内容:
时区问题分析
时间函数纠正
时间类型使用
夏令时支持
(1) 时区问题分析
1、处理时间窗口刚好晚8个小时
2、BIGINT转TIMESTAMP是否隐含时区信息
3、watermark + 8h 问题
4、SQL 时区问题
5、 CURRENT_DATE函数问题
6、CURRENT_DATE,CURRENT_TIMESTAMP 时区问题
7、long 转 timestamp 怎么做
8、Hive分区提交的时区差问题
9、PROCTIME()函数语义问题
10、毫秒值如何声明成时间类型
时区问题原因:
PROCTIME()应该考虑时区,但未考虑时区
CURRENT_TIMESTAMP/CURRENT_TIME/CURRENT_DATE/NOW()未考虑时区
TIMESTAMP类型不考虑时区,但用户希望是本地时区的时间
支持TIMESTAMP_LTZ类型
TIMESTAMP VS TIMESTAMP_LTZ
(2) 时间函数纠正
订正 PROCTIME() 函数
订正 CURRENT_TIMESTAMP / CURRENT_TIME / CURRENT_DATE / NOW() 函数
解决 processing time window 时区问题
订正 Streaming 和 Batch 模式下函数取值方式
LOCALTIME
LOCALTIMESTAMP
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
NOW()
CURRENT_ROW_TIMESTAMP()
PROCIME()
Event time 定义在 TIMESTAMP 列上
适用于源数据包含字符串的时间(如:2021-04-15 14:00:00)场景
Event time 定义在 TIMESTAMP_LTZ 列上
适用于源数据包含long值的时间(如:1621649473000)场景,以及夏令时时区用户
在洛杉矶时区,[2021-03-14 00:00,2021-03-14 00:04]窗口会收集 3 个小时的数据
在非夏令时区,[2021-03-14 00:00,2021-03-14 00:04]窗口会收集 4 个小时的数据
3、Flink SQL 重要改进
支持常用的 Hive DML,DQL语法
SORT/CLUSTER/DISTRIBUTE BY
Group By
Join
Union
LATERAL VIEW
Window Functions
SubQueries
CTE
INSERT INTO dest schema
Implicit type convesions
支持常用的 Hive DML,DQL语法
Hive dialect 需要配合HiveCatalog 和 Hive Module 一起使用
Hive Module 提供了Hive 所有内置函数,加载后可以直接访问
4、FLIP-163: 改进 SQL Client
Deprecate YAML 文件,不推荐使用 YAML文件初始化
SQL Client 支持指定文件初始化
5、FLIP-136: 增强DataStream 和 Table 的转换
支持DataStream 和Table 转换时传递 event Time 和 watermark
支持Changelog 数据流在Table 和 DataStream 间互相转换
4、总结
支持Window TVF
时区和时间函数
提升Hive兼容性
改进SQL Client
增强DataStream转换
Flink 1.14 版本计划:
删除Legacy Planner
完善Window TVF
提升 Schema Handling
增强 Flink CDC
![](https://weixin.aisoutu.com/cunchu4/4/2021-09-11/4_1631364148167.png)
End
找各类大数据技术文章,就来
<3分钟秒懂大数据>
随时更新互联网大数据组件内容
专为学习者提供技术博文
作者简介:在IT中穿梭旅行,秋招7offer,CSDN博客:https://blog.csdn.net/weixin_38201936
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材