【Apache Paimon】-- 5 -- Flink 向 Paimon 表写入数据

目录

1、通过CTAS/CDAS语句同步数据及表结构变更

[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 ...;

参考:SQL Write | Apache Paimon

相关推荐
Fireworkitte1 小时前
Apache POI 详解 - Java 操作 Excel/Word/PPT
java·apache·excel
M4K03 小时前
Linux百度网盘优化三板斧
linux
好奇的菜鸟3 小时前
如何在 Ubuntu 24.04 (Noble) 上使用阿里源
linux·运维·ubuntu
bcbobo21cn3 小时前
初步了解Linux etc/profile文件
linux·运维·服务器·shell·profile
望获linux4 小时前
【实时Linux实战系列】CPU 隔离与屏蔽技术
java·linux·运维·服务器·操作系统·开源软件·嵌入式软件
0wioiw04 小时前
C#基础(项目结构和编译运行)
linux·运维·服务器
2401_873587825 小时前
Linux常见指令以及权限理解
linux·运维·服务器
Arthurmoo5 小时前
Linux系统之MySQL数据库基础
linux·数据库·mysql
李洋-蛟龙腾飞公司6 小时前
HarmonyOS NEXT应用元服务常见列表操作分组吸顶场景
linux·运维·windows
链上Sniper6 小时前
智能合约状态快照技术:实现 EVM 状态的快速同步与回滚
java·大数据·linux·运维·web3·区块链·智能合约