目录
[2、通过INSERT INTO语句插入或更新数据](#2、通过INSERT INTO语句插入或更新数据)
[3、通过INSERT OVERWRITE语句覆写数据](#3、通过INSERT OVERWRITE语句覆写数据)
[3.1、my_table_1 表是非分区表,覆写整张my_table表](#3.1、my_table_1 表是非分区表,覆写整张my_table表)
[3.2、my_table_1 表是分区表](#3.2、my_table_1 表是分区表)
[3.3、my_table_1 表是分区表,动态覆写 my_table表中的分区](#3.3、my_table_1 表是分区表,动态覆写 my_table表中的分区)
[3.4、my_table_1 表是分区表,覆写整张 my_table_1 表](#3.4、my_table_1 表是分区表,覆写整张 my_table_1 表)
1、通过CTAS/CDAS语句同步数据及表结构变更
以 OSS 为例,DDL
CREATE CATALOG `my-catalog` WITH (
'type' = 'paimon',
'metastore' = 'filesystem',
'warehouse' = '<warehouse>',
'fs.oss.endpoint' = '<fs.oss.endpoint>',
'fs.oss.accessKeyId' = '<fs.oss.accessKeyId>',
'fs.oss.accessKeySecret' = '<fs.oss.accessKeySecret>'
);
|------------------------|-----------------------------------------|--------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 配置项 | 说明 | 必填 | 备注 |
| my-catalog | Paimon Catalog名称。 | 是 | 请填写为自定义的英文名。 |
| type | Catalog类型。 | 是 | 固定值为paimon。 |
| metastore | 元数据存储类型。 | 是 | 参数取值如下: * filesystem:配置为Paimon Filesystem Catalog类型时填写。 * sync:配置为Paimon Sync Catalog类型时填写。 |
| warehouse | OSS服务中所指定的数仓目录。 | 是 | 格式为oss://<bucket>/<object>。其中: * bucket:表示您创建的OSS Bucket名称。 * object:表示您存放数据的路径。 |
| fs.oss.endpoint | OSS服务的连接地址。 | 是 | * 如果Flink与DLF位于同一地域,则使用VPC网络Endpoint,否则使用公网Endpoint。 * 当warehouse指定的OSS Bucket与Flink工作空间不在同一地域,或使用其它账号下的OSS Bucket时需要填写。 获取方法请参见OSS地域和访问域名和创建AccessKey。 |
| fs.oss.accessKeyId | 拥有读写OSS权限的阿里云账号或RAM账号的Accesskey ID。 | 是 | * 如果Flink与DLF位于同一地域,则使用VPC网络Endpoint,否则使用公网Endpoint。 * 当warehouse指定的OSS Bucket与Flink工作空间不在同一地域,或使用其它账号下的OSS Bucket时需要填写。 获取方法请参见OSS地域和访问域名和创建AccessKey。 |
| fs.oss.accessKeySecret | 拥有读写OSS权限的阿里云账号或RAM账号的Accesskey secret。 | 是 | * 如果Flink与DLF位于同一地域,则使用VPC网络Endpoint,否则使用公网Endpoint。 * 当warehouse指定的OSS Bucket与Flink工作空间不在同一地域,或使用其它账号下的OSS Bucket时需要填写。 获取方法请参见OSS地域和访问域名和创建AccessKey。 |
详细参考:Filesystems | Apache Paimon
2、通过INSERT INTO语句插入或更新数据
- Paimon主键表可以接受所有类型(INSERT、UPDATE_BEFORE、UPDATE_AFTER、DELETE)的消息,相同主键的数据在写入后会根据数据合并机制进行合并。
- Paimon Append Only表(非主键表)只能接受INSERT类型的消息。
3、通过INSERT OVERWRITE语句覆写数据
这里所提的覆写是指清空并重新写入数据。我们可通过 INSERT OVERWRITE 语句覆写整张Paimon 表或覆写特定分区,SQL语句示例如下。
java
****** 特别注意 *******
(1)仅批作业支持 INSERT OVERWRITE 语句。
(2)默认情况下,INSERT OVERWRITE 操作不会产生变更数据,删除与导入的数据无法被下游流式消费。
如果用户需要消费此类数据,请参考流式消费 INSERT OVERWRITE 语句的结果。
3.1、my_table_1 表是非分区表,覆写整张my_table表
java
INSERT OVERWRITE my_table_1 SELECT ...;
3.2、my_table_1 表是分区表
覆写 my_table_1 表中的dt=20241108,hh=06
分区。
sql
INSERT OVERWRITE my_table_1 PARTITION (`dt` = '20241108', `hh` = '06')
SELECT ...;
3.3、my_table_1 表是分区表,动态覆写 my_table表中的分区
sql
INSERT OVERWRITE my_table_1 SELECT ...;
3.4、my_table_1 表是分区表,覆写整张 my_table_1 表
sql
INSERT OVERWRITE my_table_1 /*+ OPTIONS('dynamic-partition-overwrite' = 'false') */ SELECT ...;