全部產品
Search
文件中心

MaxCompute:Paimon外部表格

更新時間:Aug 19, 2025

MaxCompute支援通過建立Paimon外部表格與儲存於OSS上的Paimon表目錄建立映射關係,並訪問其中的資料。本文為您介紹如何建立Paimon外部表格,並通過MaxCompute訪問Paimon外部表格。

背景資訊

Apache Paimon是一種流批一體的湖儲存格式,具備高吞吐的寫入和低延後查詢能力。Realtime ComputeFlink版E-MapReduce的常見計算引擎(如Spark、Hive或Trino)都與Paimon有完善的整合。藉助Apache Paimon,您可快速構建自己的資料湖儲存服務在儲存服務OSS上,並接入MaxCompute實現資料湖的分析。您可以通過中繼資料過濾來減少處理任務中對不需要的OSS目錄中檔案的讀取。

前提條件

  • 已具備訪問OSS的許可權。阿里雲帳號(主帳號)、RAM使用者或RAMRole身份可以訪問OSS外部表格,授權資訊請參見OSS的STS模式授權

  • (可選)已準備好OSS儲存空間(Bucket)、OSS目錄及OSS資料檔案。具體操作請參見建立儲存空間管理目錄簡單上傳

    MaxCompute已支援在OSS側自動建立目錄,對於攜帶外部表格及UDF的SQL語句,您可以通過一條SQL語句執行讀寫外部表格及UDF的操作。原手動建立目錄方式仍然支援。
  • 已建立MaxCompute專案。具體操作請參見建立MaxCompute專案

    由於MaxCompute只在部分地區部署,跨地區的資料連通性可能存在問題,因此建議Bucket與MaxCompute專案所在地區保持一致。
  • 已具備在MaxCompute專案中建立表(CreateTable)的許可權。表操作的許可權資訊請參見MaxCompute許可權

使用限制

  • 當前MaxCompute僅支援對Paimon外部表格的讀取操作,暫不支援寫入和自動跟隨Paimon表結構變更等操作。

  • Paimon外部表格不支援cluster屬性。

  • Paimon外部表格暫不支援查詢回溯歷史版本的資料等特性。

注意事項

當Paimon檔案中的Schema與外表Schema不一致時:

  • 列數不一致:如果Paimon檔案中的列數小於外表DDL的列數,則讀取Paimon資料時,系統會將缺少的列值補充為NULL。反之(大於時),會丟棄超出的列資料。

  • 列類型不一致:MaxCompute不支援使用INT類型接收Paimon檔案中的STRING類型資料,支援使用STRING類型接收INT類型資料(不推薦)。

資料類型支援

說明

下表中已開通表示支援,未開通表示不支援。

MaxCompute資料類型請參見1.0資料類型版本2.0資料類型版本

資料類型

是否支援

TINYINT

已開通

SMALLINT

已開通

INT

已開通

BIGINT

已開通

BINARY

已開通

FLOAT

已開通

DOUBLE

已開通

DECIMAL(precision,scale)

已開通

VARCHAR(n)

已開通

CHAR(n)

已開通

STRING

已開通

DATE

已開通

DATETIME

未開通

TIMESTAMP

已開通

TIMESTAMP_NTZ

未開通

BOOLEAN

已開通

ARRAY

已開通

MAP

已開通

STRUCT

已開通

JSON

未開通

建立外部表格

文法結構

各格式的外部表格文法結構詳情,請參見OSS外部表格

CREATE EXTERNAL TABLE  [if NOT EXISTS] <mc_oss_extable_name>
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
  'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION '<oss_location>';

公用參數

公用參數說明請參見基礎文法參數說明

寫入資料

MaxCompute寫入文法詳情,請參見寫入文法說明

查詢分析

使用樣本

步驟一:在Flink中準備資料

建立Paimon Catalog和Paimon表,並在表中插入資料,樣本如下。

說明

如果您在OSS中已有Paimon表資料,可忽略此步驟。

  1. 登入Realtime Compute控制台,建立Paimon Filesystem Catalog。假設建立的Catalog名稱為paimoncatalog,具體操作請參見建立Paimon Filesystem Catalog

  2. 建立Paimon表,具體操作請參見管理Paimon表

    1. 資料查詢文本編輯地區輸入如下命令後,選中代碼後單擊運行

      CREATE TABLE `paimoncatalog`.`default`.test_tbl (
          id BIGINT,
          data STRING,
          dt STRING,
          PRIMARY KEY (dt, id) NOT ENFORCED
      ) PARTITIONED BY (dt);
    2. 資料開發 > ETL頁面,建立包含如下語句的SQL作業,部署並運行作業。具體操作請參見作業開發地圖

      INSERT INTO `paimoncatalog`.`default`.test_tbl VALUES (1,'CCC','2024-07-18'), (2,'DDD','2024-07-18');
      重要
      • 請確認SQL作業的引擎版本為vvr-8.0.1-flink-1.17及以上版本。

      • 若SQL作業有限流作業(例如執行INSERT INTO ... VALUES ...語句),需要執行以下操作:

        1. 作業營運頁面單擊目標作業,進入部署詳情頁簽。

        2. 編輯運行參數配置,在其他配置中設定execution.checkpointing.checkpoints-after-tasks-finish.enabled: true代碼,並儲存。關於如何配置作業的運行參數詳情,請參見配置作業部署資訊

步驟二:通過MaxCompute建立Paimon外表

在MaxCompute中執行以下SQL代碼,建立MaxCompute Paimon外部表格。

CREATE EXTERNAL TABLE oss_extable_paimon_pt
(
    id BIGINT,
    data STRING
)
PARTITIONED BY (dt STRING )
STORED BY 'org.apache.paimon.hive.PaimonStorageHandler'
WITH serdeproperties (
    'odps.properties.rolearn'='acs:ram::<uid>:role/aliyunodpsdefaultrole'
)
LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/<table_path>'
;

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

上述代碼中table_path為Flink中建立的Paimon表路徑,例如oss-mc-test/paimon/default.db/test_tbl。擷取方法如下:

  1. 登入Realtime Compute控制台,單擊工作空間名稱進入目標工作空間。

  2. 在左側導覽列,單擊資料管理

  3. 中繼資料頁面單擊目標Catalog下的default,並在default頁面中單擊目標表操作列的查看

  4. 表結構詳情頁簽的表屬性地區擷取path參數值,table_path中僅填寫oss://之後的路徑。

步驟三:引入分區資料

當建立的OSS外部表格為分區表時,需要額外執行引入分區資料的操作,詳情請參見補全OSS外部表格分區資料文法

MSCK REPAIR TABLE oss_extable_paimon_pt ADD PARTITIONS;

步驟四:通過MaxCompute讀取Paimon外部表格

在MaxCompute中執行以下命令,查詢MaxCompute Paimon外部表格oss_extable_paimon_pt。

SET odps.sql.common.table.planner.ext.hive.bridge = true;
SET odps.sql.hive.compatible = true;
SELECT * FROM oss_extable_paimon_pt WHERE dt='2024-07-18';

返回結果如下:

+------------+------------+------------+
| id         | data       | dt         |
+------------+------------+------------+
| 1          | CCC        | 2024-07-18 |
| 2          | DDD        | 2024-07-18 |
+------------+------------+------------+

相關文檔

您還可以在Flink中以自訂Catalog的方式建立MaxCompute Paimon外部表格,並在寫入資料後,通過MaxCompute查詢並消費Paimon資料,詳情請參見基於Flink建立MaxCompute Paimon外部表格