本文介紹基於Flink建立Paimon Catalog並產生資料,MaxCompute根據Filesystem Catalog建立外部項目,從而直接讀取Paimon表資料。
適用範圍
只支援Paimon格式表。
不支援寫入Dynamic Bucket表。
不支援寫入Cross Partition
資料類型映射
MaxCompute資料類型請參見1.0資料類型版本和2.0資料類型版本。
開源Paimon資料類型
MaxCompute 2.0資料類型
是否支援讀寫
說明
TINYINT
TINYINT

8位有符號整型。
SMALLINT
SMALLINT

16位有符號整型。
INT
INT

32位有符號整型。
BIGINT
BIGINT

64位有符號整型。
BINARY(MAX_LENGTH)
BINARY

位元據類型,目前長度限制為8 MB。
FLOAT
FLOAT

32位二進位浮點型。
DOUBLE
DOUBLE

64位二進位浮點型。
DECIMAL(precision,scale)
DECIMAL(precision,scale)

10進位精確數字類型。,預設為
decimal(38,18)。允許自訂precision和scale值。precision:表示最多可以表示多少位的數字。預設取值範圍:
1 <= precision <= 38。scale:表示小數部分的位元。預設取值範圍:
0 <= scale <= 18。
VARCHAR(n)
VARCHAR(n)

變長字元類型。n為長度,[1,65535]。
CHAR(n)
CHAR(n)

固定長度字元類型。n為長度,[1,255]。
VARCHAR(MAX_LENGTH)
STRING

字串類型目前長度限制為8MB。
DATE
DATE

日期類型格式為
yyyy-mm-dd。TIME、TIME(p)
不支援

Paimon資料類型TIME,不帶時區的時間類型,由時分秒組成,精度可到納秒。
TIME(p)表示小數位的精度,0-9之間,預設為0。
MaxCompute側沒有映射的類型。
TIMESTAMP、TIMESTAMP(p)
TIMESTAMP_NTZ

無時區時間戳記類型,精確到納秒。
讀表需開啟Native開關
SET odps.sql.common.table.jni.disable.native=true;TIMESTAMP WITH LOCAL TIME_ZONE(9)
TIMESTAMP

時間戳記類型,精確到納秒格式為
yyyy-mm-dd hh:mm:ss.xxxxxxxxx。針對Paimon源表TIMESTAMP低精度類型,在寫入時會截斷處理。0~3按照3位截斷,4~6按照6位截斷,7~9按照9位截斷。
TIMESTAMP WITH LOCAL TIME_ZONE(9)
DATETIME

時間戳記類型,精確到納秒
格式為
yyyy-mm-dd hh:mm:ss.xxxxxxxxxBOOLEAN
BOOLEAN

BOOLEAN類型。
ARRAY
ARRAY

複雜類型。
MAP
MAP

複雜類型。
ROW
STRUCT

複雜類型。
MULTISET<t>
不支援

MaxCompute側沒有映射的類型。
VARBINARY、VARBINARY(n)、BYTES
BINARY

可變長度二進位字串的資料類型。
表。
操作步驟
步驟一:來源資料準備
如在OSS中已有Paimon表資料,可跳過此步驟。
登入OSS控制台,建立Bucket,本樣本中Bucket名為
paimon-fs。詳情請參見建立儲存空間。在Bucket下建立目錄paimon-test。登入Flink控制台,在左上方選擇地區。
單擊目標工作空間名稱,然後在左側導覽列,選擇資料管理。
在右側Catalog列表 介面,單擊建立Catalog 。在彈出的建立 Catalog 對話方塊裡,選擇Apache Paimon,單擊下一步 並配置如下參數:
參數
是否必填
說明
metastore
必填
中繼資料存放區類型。本樣本中選擇
filesystem。catalog name
必填
自訂catalog名稱,例如
paimon-fs-catalog。warehouse
必填
OSS服務中所指定的數倉目錄。本樣本中
oss://paimon-fs/paimon-test/。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 `paimon-fs-catalog`.`default`.test_tbl ( id BIGINT, data STRING, dt STRING, PRIMARY KEY (dt, id) NOT ENFORCED ) PARTITIONED BY (dt) WITH ( 'bucket' = '3' ); INSERT INTO `paimon-fs-catalog`.`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個字元。
例如
external_fs。外部数据源描述
選填
根據需要填寫。
地域
必填
預設為當前地區。
認證和鑒權
必填
預設為阿里雲RAM角色。
RoleARN
必填
RAM角色的ARN資訊。此角色需要包含能夠同時訪問DLF和OSS服務的許可權。
登入RAM控制台。
在左側導覽列選擇。
在基礎資訊地區,可以擷取ARN資訊。
樣本:
acs:ram::124****:role/aliyunodpsdefaultrole。存储类型
OSS
OSS-HDFS
Endpoint
自動產生,杭州地區為:
oss-cn-hangzhou-internal.aliyuncs.com。外部数据源补充属性
選填
特殊聲明的外部資料源補充屬性。指定後,使用此外部資料源的任務可以按照參數定義的行為訪問源系統。
說明支援的具體參數請關注後續官網文檔更新說明,具體參數將隨產品能力演化逐步放開。
單擊確認,完成外部資料源的建立。
在外部数据源頁面,單擊目標資料來源對應的操作的详情,可查看資料來源詳細資料。
步驟三:MaxCompute建立外部項目
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇。
在外部项目頁簽,單擊新建项目。
在彈出的新增项目對話方塊,根據介面提示文案設定項目資訊,單擊確認完成專案建立。
參數
是否必填
說明
项目类型
必填
預設為外部項目。
地域
必填
預設為當前地區,此處無法修改。
项目名称(全网唯一)
必填
字母開頭,包含字母、數字及底線(_),長度在3-28個字元。
MaxCompute外部数据源类型
選填
選擇Filesystem Catalog。
MaxCompute外部数据源
選填
选择已有:會出現已經建立過的外部資料源。
新建外部数据源:即可建立並使用新的外部資料源。
MaxCompute外部数据源名称
必填
選擇已有:在下拉式清單中選擇已經建立好的外部資料源名稱。
建立外部資料源:則會使用建立的外部資料源名稱。
認證和鑒權
必填
任務執行者身份,如未建立服務關聯角色,需要先建立才可以使用此模式。
RoleARN
必填
RAM角色的ARN資訊。此角色需要包含能夠同時訪問DLF和OSS服務的許可權。
登入RAM控制台。
在左側導覽列選擇。
在基礎資訊地區,可以擷取ARN資訊。
樣本:
acs:ram::124****:role/aliyunodpsdefaultrole。存储类型
OSS
OSS-HDFS
Endpoint
必填
預設產生。
Bucket 数据目录
必填
選擇完整的OSS Bucket和至Catalog層級的檔案系統目錄。本樣本中
oss://paimon-fs/paimon-test/。表格式
必填
預設為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和表。