本文介绍基于Flink创建Paimon Catalog并生成数据,MaxCompute根据Filesystem Catalog创建外部项目,从而直接读取Paimon表数据。
适用范围
只支持Paimon格式表。
不支持写入Dynamic Bucket表。
不支持写入Cross Partition表。
操作步骤
步骤一:源数据准备
如在OSS中已有Paimon表数据,可跳过此步骤。
登录Flink控制台,单击目标工作空间名称。
在左侧菜单栏,选择数据管理。
在右侧Catalog列表界面,单击创建Catalog,在弹出的创建 Catalog对话框里,选择Apache Paimon,单击下一步并配置如下参数:
参数
是否必填
说明
metastore
必填
元数据存储类型。本示例中选择
filesystem
。catalog name
必填
自定义catalog名称,例如
paimon-test
。warehouse
必填
OSS服务中所指定的数仓目录,例如
oss://paimon-fs/paimon-test/
。登录OSS控制台,开通服务并创建Bucket,详情请参见OSS控制台快速入门。fs.oss.endpoint
必填
OSS服务的endpoint,例如
oss-cn-hangzhou-internal.aliyuncs.com
。fs.oss.accessKeyId
必填
访问OSS服务所需的Access Key ID。
fs.oss.accessKeySecret
必填
访问OSS服务所需的Access Key Secret。
基于Paimon Catalog创建Paimon表并写入数据。在左侧导航栏,选择
页面的查询脚本页签,单击,新建查询脚本。运行如下代码:
说明由于Flink使用Paimon Catalog,所以会默认遵守Paimon Catalog在文件系统上的组织形式,即
paimon_catalog_name/database_name.db/xxxx
。若使用其他引擎读写oss此目录的Paimon数据,也需要遵守Paimon Catalog在文件系统上的组织形式,并且只存放Paimon格式数据,否则会被识别为异常数据报错。CREATE TABLE `filesystem-catalog-paimon`.`default`.test_tbl ( id BIGINT, data STRING, dt STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt) WITH ( 'bucket' = '3' ); INSERT INTO `filesystem-catalog-paimon`.`default`.test_tbl VALUES (1,'CCC','2024-07-18'), (2,'DDD','2024-07-18'),(3,'EEE','2025-06-18');
查看生成的文件。登录OSS控制台,查看Paimon Catalog绑定的OSS目录下生成的Paimon表。
步骤二:MaxCompute创建外部数据源
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择管理配置 > 外部数据源。
在外部数据源页面,单击创建外部数据源。
在新增外部数据源对话框,根据界面提示配置相关参数。参数说明如下:
参数
是否必填
说明
外部数据源类型
必填
选择Filesystem Catalog。
外部数据源名称
必填
可自定义命名。命名规则如下:
以字母开头,且只能包含小写字母、下划线和数字。
不能超过128个字符。
外部数据源描述
选填
根据需要填写。
地域
必填
默认为当前地域。
认证和鉴权
必填
默认为阿里云RAM角色
RoleARN
必填
acs:ram::<uid>:role/aliyunodpsdefaultrole
存储类型
必填
OSS或OSS-HDFS
Endpoint
必填
系统默认生成。
单击确认,完成外部数据源的创建。
在外部数据源页面,单击数据源操作列的详情可查看数据源详细信息。
步骤三:MaxCompute创建外部项目
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择管理配置 > 项目管理。
在项目管理页面,单击外部项目页签,然后单击新建项目。
在新增项目对话框,根据界面提示配置参数。参数说明如下:
参数
是否必填
说明
项目类型
必填
默认为外部项目。
地域
必填
默认为当前地域,此处无法修改。
项目名称(全网唯一)
必填
字母开头,包含字母、数字及下划线(_),长度在3-28个字符。
MaxCompute外部数据源类型
选填
选择Filesystem Catalog。
MaxCompute外部数据源
选填
选择已有:会出现已经创建过的外部数据源。
新建外部数据源:即可新建并使用新的外部数据源。
MaxCompute外部数据源名称
必填
选择已有:在下拉列表中选择已经创建好的外部数据源名称。
新建外部数据源:则会使用新建的外部数据源名称。
认证和鉴权
必填
任务执行者身份,如未创建服务关联角色,需要先创建才可以使用此模式。
RoleARN
必填
acs:ram::<uid>:role/aliyunodpsdefaultrole
存储类型
必填
OSS或OSS-HDFS。
Endpoint
必填
默认生成。
Bucket数据目录
必填
填写在OSS中创建的Bucket目录。
表格式
必填
默认为Paimon。
计算资源付费类型
必填
包年包月或按量付费。
默认Quota
必填
选择已有Quota.
描述
选填
自定义项目描述。
单击确认,完成项目创建。
步骤四:读写Paimon表
选择连接工具登录外部项目。
进入新创建的外部项目,查看已有的Paimon schemas。
-- 打开session级别支持schema语法开关。 SET odps.namespace.schema=true; SHOW schemas; -- 返回结果如下。 ID = 20250922********wbh2u7 default OK
读取default schema下的表。
SET odps.sql.allow.fullscan=true; SELECT * FROM <external_project_name>.default.test_tbl; -- 返回结果如下。 +------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | CCC | 2024-07-18 | | 2 | DDD | 2024-07-18 | | 3 | EEE | 2025-06-18 | +------------+------------+------------+
向已存在的Paimon表中写入数据。
INSERT INTO test_tbl PARTITION(dt='2025-08-26') VALUES(4,'FFF'); SELECT * FROM test_tbl; -- 返回结果如下。 +------------+------------+------------+ | id | data | dt | +------------+------------+------------+ | 1 | CCC | 2024-07-18 | | 2 | DDD | 2024-07-18 | | 3 | EEE | 2025-06-18 | | 4 | FFF | 2025-08-26 | +------------+------------+------------+
在新建的schema中创建表,并写入数据。
新建一张表写入数据,MaxCompute也会按照Paimon Catalog在文件系统上的组织形式写入新数据。
-- 创建schema。 CREATE schema testschema; -- 在新建的schema中建表。 use schema testschema; CREATE TABLE table_test(id int,name string); -- 在新建的表中插入数据,并读取。 INSERT INTO table_test VALUES (101,'张三'),(102,'李四'); SELECT * FROM table_test; -- 返回结果如下。 +------------+------------+ | id | name | +------------+------------+ | 101 | 张三 | | 102 | 李四 | +------------+------------+
登录OSS控制台,在OSS中找到外部项目的Bucket目录,可以看到新建的schema和表。