Flink 1.20 版本发布,一些值得注意的特性!

科技   2024-08-05 09:00   浙江  

8月2日,Flink1.20版本发布,一边听歌一边看我分析。(戳上面👆听歌)

本文基于官方网站的Release Note做一个简单的分析,看看哪些内容是更加值得我们关注的。

在定位上,这个版本是一个2.0版本之前的过渡版本,也是1.x时代最后一个版本。

这个版本中有很多细小的变动,和一些MVP版本的开发,那站在用户的角度,比较值得注意的几个特性有哪些:

物化表

1.20版本引入了一个 物化表(Materialized Table) 的概念,官方给的解释是:

通过定义查询语句和数据新鲜度,引擎会自动推导出表结构并创建对应的数据加工链路,以保证查询结果满足所要求的数据新鲜度。

什么意思呢?

我们直接看一段代码:

-- 1. 创建物化表并定义新鲜度
CREATE MATERIALIZED TABLE dwd_orders
(
 PRIMARY KEY(ds, id) NOT ENFORCED
)
PARTITIONED BY (ds)
FRESHNESS = INTERVAL '3' MINUTE
AS SELECT 
 o.ds
 o.id,
 o.order_number,
 o.user_id,
...
FROM 
 orders as o
 LEFT JOIN products FOR SYSTEM_TIME AS OF proctime() AS prod
 ON o.product_id = prod.id
 LEFT JOIN order_pay AS pay
 ON o.id = pay.order_id and o.ds = pay.ds;

-- 2. 暂停数据刷新
ALTER MATERIALIZED TABLE dwd_orders SUSPEND;

-- 3. 恢复数据刷新
ALTER MATERIALIZED TABLE dwd_orders RESUME
-- Set table option via WITH clause
WITH(
 'sink.parallesim' = '10'
);

-- 手动刷写历史数据
ALTER MATERIALIZED TABLE dwd_orders REFRESH PARTITION(ds='20231023');

也就是说,现在我们定义了一个dwd_orders的sink算子,下游数据刷新频率等于3分钟。你的sink可以是Kafka、Paimon、Hudi等等。

我把FLIP设计文档中的motivation部分贴在下面,大家可以自己看:

从感官上来讲,根据FLIP设计文档中的描述,我一时分不清这个Feature要解决的真正问题在哪里?

但是不急,我们等2.x版本有了更多的场景再回过头来看看,暂时保持关注。

支持DISTRIBUTED BY

1.20版本中,Flink社区引入了分桶的概念。这个概念在很多计算引擎中都有,例如Hive、Doris等等。

目的是通过将数据拆分为不相交的子集来实现数据在外部存储系统中的负载均衡

关于这个Feature的出现,主要是2个目的。

第一,在SINK端实现数据的负载均衡

目前Flink Sink算子进行数据均衡存储是在sink connector中实现的。例如官方社区的 kafka sink connetor是支持sink.partitioner这样的配置的,结合Flink的分区算子进行sink端的负载均衡。

此外,很多公司基于此还开发了很多额外的参数让kafka sink connector变得更易用。

第二,Flink作为计算引擎必须要考到Join操作的性能优化

在简化用户的建表操作的同时,让Flink引擎感知到外部数据的物理分布,为未来支持类似bucket join这样的优化打好基础。

State和Checkpoint上的一些优化

Flink 1.20 引入了统一的检查点文件合并机制,它将多个小的检查点文件合并为数量较少的大文件,从而减少了文件创建和文件删除操作的次数,并减轻了检查点期间文件系统元数据管理的压力。

此外,1.20版开始,Flink可以使用RocksDB API在后台合并RocksDB 状态后端生成的小文件。

还有一些其他的优化,大家根据需要去关注官方的文档:

官宣|Apache Flink 1.20 发布公告


300万字!全网最全大数据学习面试社区等你来!


如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!

全网首发|大数据专家级技能模型与学习指南(胜天半子篇)
互联网最坏的时代可能真的来了
我在B站读大学,大数据专业
我们在学习Flink的时候,到底在学习什么?
193篇文章暴揍Flink,这个合集你需要关注一下
Flink生产环境TOP难题与优化,阿里巴巴藏经阁YYDS
Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点
我们在学习Spark的时候,到底在学习什么?
在所有Spark模块中,我愿称SparkSQL为最强!
硬刚Hive | 4万字基础调优面试小总结
数据治理方法论和实践小百科全书
标签体系下的用户画像建设小指南
4万字长文 | ClickHouse基础&实践&调优全视角解析
【面试&个人成长】社招和校招的经验之谈
大数据方向另一个十年开启 |《硬刚系列》第一版完结
我写过的关于成长/面试/职场进阶的文章
当我们在学习Hive的时候在学习什么?「硬刚Hive续集」

大数据技术与架构
王知无,大数据卷王,专注大数据技术分享。
 最新文章