【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

相关推荐
用户4760220227816 分钟前
机器配置免密切root
linux
zzzsde1 小时前
【Linux】基础开发工具(2):vim补充说明&&gcc/g++编译器
linux·运维·服务器
q***65691 小时前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch
2301_807583231 小时前
了解python,并编写第一个程序,常见的bug
linux·python
杨德杰2 小时前
Ubuntu设置VNC远程桌面
linux·运维·ubuntu
可涵不会debug3 小时前
时序数据库选型指南:大数据时代下Apache IoTDB的崛起之路
大数据·apache·时序数据库
p***q783 小时前
【保姆级教程】apache-tomcat的安装配置教程
java·tomcat·apache
写代码的学渣3 小时前
Ubuntu/麒麟默认锁定root账户
linux·运维·ubuntu
wdfk_prog4 小时前
[Linux]学习笔记系列 -- [block]bfq-iosched
linux·笔记·学习
SelectDB4 小时前
Apache Doris 中的 Data Trait:性能提速 2 倍的秘密武器
数据库·后端·apache