【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

相关推荐
太空的旅行者30 分钟前
告别双系统——WSL2+UBUNTU在WIN上畅游LINUX
linux·运维·ubuntu
人工智能训练师2 小时前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
灿烂阳光g2 小时前
domain_auto_trans,source_domain,untrusted_app
android·linux
Ronin3054 小时前
【Linux系统】日志与策略模式
linux·策略模式·日志
ZzzK,5 小时前
JAVA虚拟机(JVM)
java·linux·jvm
Aspiresky6 小时前
浅析Linux进程信号处理机制:基本原理及应用
linux·运维·信号处理
ajassi20007 小时前
linux C 语言开发 (八) 进程基础
linux·运维·服务器
..过云雨7 小时前
05.【Linux系统编程】进程(冯诺依曼体系结构、进程概念、进程状态(注意僵尸和孤儿)、进程优先级、进程切换和调度)
linux·笔记·学习
matlab的学徒7 小时前
Web与Nginx网站服务(改)
linux·运维·前端·nginx·tomcat
Insist7537 小时前
prometheus安装部署与alertmanager邮箱告警
linux·运维·grafana·prometheus