Paimon_01_241020
1. 概述
1.1. 核心特点
- 统一批处理和流处理(流和批同一套代码)
- 数据湖能力
- 多种引擎平权
- 变更日志生成
- 丰富的表类型(主键表、append-only,有序的流式读取来代替消息队列)
- 模式演化(schema变更)
1.2. 组件
- Paimon 0.5 SNAPSHOT
- Flink 1.17.0
- Hive 3.1.3
- Spark 3.3.1
1.3. 基本概念
- Snapshot。可以通过最新快照来访问最新数据。
- Partition。分文件夹,可选。如果定义了主键,分区键必须是主键的子集。
- Bucket。未分区表或分区表被细分为存储桶。桶是读写的最小存储单元,因此桶的数量限制了最大处理并行度(太大会导致大量小文件和低读取性能)。建议每个桶大小为1GB左右。
- 一致性保证。任意两个同时修改表的Writer,只要不修改同一个桶,他们的提交都是可序列化;如果修改同一个桶,则仅保证快照隔离,也就是最终状态可能是两次提交的混合,但不会丢失任何更改。
1.4. 文件布局
2. 集成Flink
2.1. 环境准备
2.1.1. 先安装flink
2.1.2. 再上传paimon的jar包到flink的lib目录下
2.1.3. 启动Hadoop
2.1.4. 启动flink sql-client
2.2. Catalog
Paimon Catalog可以持久化元数据,支持两种类型的metastore
- 文件系统(默认)
- hive metastore
2.2.1. 文件系统
2.2.2. Hive Catalog
略
2.3. DDL
2.3.1. 建管理表
在paimon catalog中创建的表就是管理表,由catalog管理。当表从catalog中删除时文件也被删除,相当于是hive的内部表。
- 建表
内部表不需要指定connector。
略。
- 建分区表
注意主键子段必须是分区字段的子集。
略。
- CREATE TABLE AS(CTAS)(Flink支持)
2.3.2. 建外部表
外部表由Catalog记录但不管理。删除外部表,其表文件不会被删除。
注意:不能在Paimon Catalog下执行以下语句,要在fs_catalog下执行
2.3.3. 建临时表
仅Flink支持临时表。与外部表一样,临时表只是记录,但不由当前Flink SQL会话管理,临时表不持久化。与外部表的区别在于,临时表在Paimon Catalog中创建。
如果像将Paimon Catalog与其他表一起使用,但不想将他们存储在其他Catalog中,可以创建临时表。
2.3.4. 修改表
2.3.5. 修改列
2.3.6. 修改水印
todo:今天学到13
lookup join维表join