【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

相关推荐
冉佳驹17 小时前
Linux ——— 多线程编程中的核心概念与技术实现
linux·条件变量·互斥锁·自旋锁·线程的概念·线程的创建、等待、分离·生产者消费模型
Skilce17 小时前
HAProxy
linux·运维·负载均衡
有一个好名字17 小时前
claude code安装
linux·运维·前端
亮子AI17 小时前
【Linux】如何拷贝目录?
linux·运维·服务器
starvapour18 小时前
Ubuntu更换显卡驱动后网络消失的问题
linux·运维·ubuntu
风酥糖18 小时前
在Termux中运行Siyuan笔记服务
android·linux·服务器·笔记
哼?~18 小时前
Linux信号产生
linux
Je1lyfish18 小时前
CMU15-445 (2026 Spring) Project#2 - B+ Tree
linux·数据结构·数据库·c++·sql·spring·oracle
乐大师18 小时前
Linux普通用户设置开机自启服务
linux·服务器·开机自启动
fengyehongWorld18 小时前
Linux wsl中使用windows命令
linux·运维·windows