全部產品
Search
文件中心

MaxCompute:Paimon_DLF外部項目

更新時間:Jun 06, 2026

MaxCompute 推出外部項目,通過映射DLF catalog實現中繼資料與資料的即時訪問,委託DLF系統管理權限,支援對DLF全託管OSS上資料的中繼資料訪問和讀寫。該方式支援在catalog層級整體映射資料湖,實現基於Paimon的跨引擎協同。目前Paimon_DLF外部項目處於邀測階段。

適用範圍

  • 表格式僅支援 DLF 全託管 OSS 儲存的 Paimon 表

  • 寫入限制:Dynamic Bucket 表和 Cross Partition 表不支援 INSERT INTO/OVERWRITE

  • 查詢限制:SHOW TABLES 不支援固定 bucket 且主鍵不包含分區鍵的 Cross Partition 表

  • 外部項目:不支援 Schema Evolution 和分區操作

  • 其他限制

    • 不支援資源/函數操作。

    • 不支援作為DataWorksData Integration的資料來源傳輸資料。

  • 資料類型映射

操作步驟

步驟一:授權

為RAM使用者授權

如果操作使用者是RAM使用者,請確保已綁定如下權限原則。添加許可權參考為管理RAM使用者的許可權

  • AliyunRAMFullAccess:如果RAM使用者沒有此許可權,需要主帳號來完成授權。

  • AliyunMaxComputeFullAccess:用來完成建立外部資料源和外部項目操作。

  • AliyunDLFReadOnlyAccess:用來完成建立外部項目操作。因建立Paimon_DLF外部項目需要有DLF catalog的List許可權,故需要此權限原則。

授權並開通DLF

  1. 雲資源訪問授權

    首次使用DLF時,要完成自動化授權操作,確保DLF能夠正常訪問相關雲資源。

    登入資料湖構建(DLF)控制台,在左上方選擇地區。

    云资源访问授权右側,單擊授权

  2. 開通資料湖構建

    選定地區,MaxCompute和DLF必須部署在同一地區。使用DLF前,需要先完成開通操作,確保服務在目標地區的可用性。

    开通数据湖构建右側,單擊开通

將DLF資料許可權賦予MaxCompute的訪問帳號

MaxCompute通過外部資料源和外部項目訪問Paimon_DLF的資料,需要先將DLF的資料相關許可權賦予MaxCompute的訪問帳號。

【使用任務執行者身份】本質是授予MaxCompute服務關聯角色訪問DLF的許可權,通過MaxCompute訪問DLF時,需要向DLF傳遞當前任務執行者身份,MaxCompute和 DLF同時將當前任務執行者限制在兩個產品各自的許可權範圍內,因此需要先為MaxCompute建立服務關聯角色並授權。步驟如下:

  1. 登入RAM控制台

  2. 在左側導覽列選擇身份管理 > 角色

  3. 角色頁面,單擊创建角色

  4. 创建角色頁面的右上方,單擊創建服務關聯角色

  5. 創建服務關聯角色頁面,選擇信任的雲服務AliyunServiceRoleForMaxComputeLakehouse,單擊創建服務關聯角色

    若提示角色已經存在,說明已經授權過,忽略即可。

許可權說明

  • 管控面許可權:即通過MaxCompute控制台操作時需要校正的許可權,主要發生在“建立MC的外表專案,綁定一個DLF Catalog”過程中。

    這部分許可權由RAM存取控制管理,需要由主帳號登入RAM存取控制台配置相關操作,管理RAM使用者的許可權

  • 資料面許可權:即登入建立好的外部項目後,讀寫Paimon表時需要校正的許可權,主要發生在“建立/維護/使用被綁定的DLF Catalog中的Schema/Table以及其他資源的過程,一般在MC的SQL中執行”。

    這部分許可權由DLF控制台管理,需要由主帳號登入DLF控制台配置相關操作,為RAM使用者授權

步驟二:建立Paimon_DLF外部資料源

  1. 登入MaxCompute控制台,在左上方選擇地區。

  2. 在左側導覽列,選擇管理配置 > 外部数据源 。

  3. 外部数据源頁面,單擊创建外部数据源

  4. 在彈出的新增外部数据源對話方塊,根據介面提示配置相關參數。參數說明如下:

    參數

    是否必填

    說明

    外部数据源类型

    必填

    選擇Paimon_DLF

    外部数据源名称

    必填

    可自訂命名。命名規則如下:

    • 以字母開頭,且只能包含小寫字母、底線和數字。

    • 不能超過128個字元。

    例如paimon_dlf

    外部数据源描述

    選填

    根據需要填寫。

    地域

    必填

    預設為當前地區。

    认证和鉴权

    必填

    預設為阿里雲RAM角色。

    关联服务角色

    必填

    預設產生。

    Endpoint

    必填

    自動產生,杭州地區為:cn-hangzhou-intranet.dlf.aliyuncs.com

    外部数据源补充属性

    選填

    特殊聲明的外部資料源補充屬性。指定後,使用此外部資料源的任務可以按照參數定義的行為訪問源系統。

    說明

    支援的具體參數請關注後續官網文檔更新說明,具體參數將隨產品能力演化逐步放開。

  5. 單擊确认,完成外部資料源的建立。

  6. 外部数据源頁面,單擊目標資料來源對應的操作详情,可查看資料來源詳細資料。

步驟三:建立外部項目

  1. 登入MaxCompute控制台,在左上方選擇地區。

  2. 在左側導覽列,選擇管理配置 > 项目管理

  3. 外部项目頁簽,單擊新建项目

  4. 在彈出的新增项目對話方塊,根據介面提示文案設定項目資訊,單擊确认完成專案建立。

    參數

    是否必填

    說明

    项目类型

    必填

    預設為外部項目。

    地域

    必填

    預設為當前地區,此處無法修改。

    项目名称(全网唯一)

    必填

    字母開頭,包含字母、數字及底線(_),長度在3-28個字元。

    MaxCompute外部数据源类型

    選填

    預設為Paimon_DLF。

    MaxCompute外部数据源

    選填

    • 选择已有:會出現已經建立過的外部資料源。

    • 新建外部数据源:即可建立並使用新的外部資料源。

    MaxCompute外部数据源名称

    必填

    • 選擇已有:在下拉式清單中選擇已經建立好的外部資料源名稱。

    • 建立外部資料源:則會使用建立的外部資料源名稱。

    数据目录

    必填

    DLF資料目錄。

    计算资源付费类型

    必填

    包年包月按量付费

    默认Quota

    必填

    選擇已有Quota.

    描述

    選填

    自訂專案描述。

步驟四:使用SQL訪問資料來源系統

重要

由於外部項目和資料來源之間是映射關係,所以刪除外部項目並不會刪除任何資料;

但與普通外部表格不同,如果在外部項目中執行DROP TABLE / DROP SCHEMA 操作,該請求會發送到對端服務,因此會真正刪除對應表或資料庫中的資料,請謹慎執行DROP操作。

  1. 選擇串連工具登入外部項目。

    如下為DataWorks新版工作空間資料開發SQL節點操作樣本。

    1. 登入DataWorks控制台,在左上方選擇地區。

    2. 在左側導覽列選擇工作空間

    3. 工作空間列表頁面,單擊建立工作空間或單擊已有目標工作空間名稱。

    4. 空間詳情頁面,單擊左側導覽列計算資源

    5. 計算資源頁面,單擊綁定計算資源,選擇MaxCompute

    6. 填寫綁定MaxCompute計算資源基本信息

      其中MaxCompute專案選擇外部項目。

  2. 列出外部項目中的schema。

    -- 開啟session層級支援schema文法開關。
    SET odps.namespace.schema=true;
    SHOW schemas;
    -- 樣本返回結果。 
    ID = 20250919****am4qb
    default
    system
    OK
  3. 在外部項目中列出schema下的表。

    如果需要在當前環境訪問生產外部項目的表,需要在所有SQL前加上use externao_project_pro;

    -- schema_name為外部項目中show出來的Schema名稱。
    SET odps.namespace.schema=true;
    USE schema <schema_name>;
    SHOW tables;
    -- 返回結果。
    ID = 20250919****am4qb
    acs:ram::<uid>:root  emp
    OK
  4. 在外部項目中建立schema。

    -- 本樣本中schema_name為schema_demo_test。
    CREATE schema <schema_name>;
  5. 使用建立的schema。

    USE schema <schema_name>;
  6. 在schema中建立表並插入資料。

    如果是RAM使用者登入,此操作需要有DLF Catalog的操作許可權,授權操作見資料授權管理

    • 命令格式:

      -- 建立表。
      CREATE TABLE [IF NOT EXISTS] <table_name> 
      (
        <col_name> <data_type>,
        ...
      )
      [COMMENT <table_comment>]
      [PARTITIONED BY (<col_name> <data_type>, ...)] 
      ;
      -- 插入資料。
      INSERT {INTO|OVERWRITE} TABLE <table_name> [PARTITION (<pt_spec>)] [(<col_name> [,<col_name> ...)]]
      <select_statement>
      FROM <from_statement>
    • 使用樣本:

      說明

      針對Paimon源表TIMESTAMP低精度類型,在寫入時會截斷處理。0~3按照3位截斷,4~6按照6位截斷,7~9按照9位截斷。

      CREATE TABLE schema_table(id int,name string);
      INSERT INTO schema_table VALUES (101,'張三'),(102,'李四');
      -- 查詢表schema_table。
      SELECT * FROM schema_table;
      -- 返回結果。
      +------------+------------+
      | id         | name       | 
      +------------+------------+
      | 101        | 張三        | 
      | 102        | 李四        | 
      +------------+------------+
  7. 切換為已有的default schema。

    use schema default;
    SHOW tables;
    -- 返回結果樣本。
    ID = 20250919*******yg5
    acs:ram::<uid>:root	emp
    acs:ram::<uid>:root	emp_detail
    acs:ram::<uid>:root	test_table
    OK
    -- 讀取表。
    SELECT * FROM test_table;
    -- 返回結果。
    +------------+------------+
    | id         | name       | 
    +------------+------------+
    | 101        | 張三        | 
    | 102        | 李四        | 
    +------------+------------+
    -- 寫入表並查詢寫入是否成功。
    INSERT INTO test_table VALUES (103,'王五');
    SELECT * FROM test_table;
    -- 返回結果。
    +------------+------------+
    | id         | name       | 
    +------------+------------+
    | 101        | 張三        | 
    | 102        | 李四        | 
    | 103        | 王五        | 
    +------------+------------+

Paimon表屬性透傳

Apache Paimon 包含特有的核心配置選項。在外部項目中建立 Paimon 表時,如需配置這些參數,需將其添加到 Paimon 外部表格的 WITH SERDEPROPERTIES 子句中。

配置方式: 在 TBLPROPERTIES 列表中添加以 mcfed.為首碼的參數,參數名稱與開源 Paimon 原生參數保持一致。

參考樣本

Paimon外表設定bucket>0、主鍵列為id和分區欄位。

  1. 建立表,配置外部表格參數

    -- 進入到外部項目,如已經在外部項目內,可不加。
    use <your external project>;
    -- 開啟session層級支援schema文法開關。
    SET odps.namespace.schema=true;
    -- 選擇要使用的schema。
    use schema <your schema>;
    CREATE TABLE oss_extable_bucket_pk_pt_bucket
    (
        id BIGINT,
        name STRING,
        dt STRING
    )tblproperties (
        'mcfed.bucket'='3', -- bucket數量
        'mcfed.bucket-key'='id', -- bucket key,有primary-key時可不寫
        "mcfed.primary-key"="dt,id", -- primary-key
        "mcfed.partition"="dt" -- 分區欄位
        );
  2. 向外部表格插入資料

    INSERT INTO oss_extable_bucket_pk_pt_bucket PARTITION (dt='2025-06-18') 
      VALUES (1, 'Alice'),(2, 'Bob');
    INSERT INTO oss_extable_bucket_pk_pt_bucket PARTITION (dt='2025-06-19') 
      VALUES (3, 'Charlie'),(4, 'David'),(5, 'Eva');
  3. 查詢外部表格

    SELECT * FROM oss_extable_bucket_pk_pt_bucket;
    -- 返回結果:
    +------------+---------+------------+
    | id         | name    | dt         |
    +------------+---------+------------+
    | 1          | Alice   | 2025-06-18 |
    | 2          | Bob     | 2025-06-18 |
    | 4          | David   | 2025-06-19 |
    | 3          | Charlie | 2025-06-19 |
    | 5          | Eva     | 2025-06-19 |
    +------------+---------+------------+
    
  4. 登入資料湖構建(DLF)控制台,在左上方選擇地區。

    查看該catalog下產生表的詳情:

    表名為 oss_extable_bucket_pk_pt_bucket,表格式為 Paimon PK 表,表類型為 Managed,檔案格式為 parquet,所屬資料庫 default。Table Properties 中關鍵配置:bucket: 3manifest.merge-min-count: 10。欄位列表包含:id(BIGINT,非空,PK 欄位,非分區)、name(STRING,可空,非 PK,非分區)、dt(STRING,非空,PK 欄位,分區欄位)。

常見問題

問題一:點擊建立外部項目報錯

問題描述:在建立外部項目時提示錯誤:“You are not authorized to perform this action.”

錯誤詳情中錯誤碼為 NoMCPermission

解決方案

  1. 如果是RAM使用者,首先確認已經賦予RAM使用者AliyunMaxComputeFullAccess許可權,詳情見操作步驟一。

  2. 由於該入口會選擇到DLF的catalog,確認已經授予DLF相關操作許可權,詳情見操作步驟一。

問題二:在外部項目的default schema下執行show tables報錯

問題描述:外部項目的default schema下執行show tables,提示錯誤:“Forbidden:User acs: ram: :<uid>:user/** doesn't have privilege LIST on DATABASE default”。

解決方案

  1. 登入資料湖構建(DLF)控制台,在左上方選擇地區。

  2. 在左側導覽列選擇系统和安全

  3. 访问控制 > 用户頁簽,重新整理查看當前RAM是否存在。

  4. 若存在,則在访问控制 > 角色給RAM使用者授權。

問題三:報錯ivalid database operations on two-tier

問題描述:外部項目內執行show schemas報錯invalid database operations on two-tier。

解決方案

  1. 首先確認當前使用的專案為外部項目。

    1. 若用DataWorks的SQL節點,點擊右側調試配置/調試配置,查看綁定的計算資源是否為外部項目。

    2. 若用DataWorks的SQL分析,點擊右上方資料來源,查看繫結資料源是否為外部項目。

    3. 若用MaxCompute的SQL分析,點擊右側回合組態,查看計算資源處選擇的專案是否為外部項目。

    4. 若用odpscmd,查看odps_config.ini檔案中的project_name參數值是否為外部項目。

  2. 確認使用的是外部項目後,執行如下SQL,需選中一起執行。

    -- 開啟session層級支援schema文法開關。
    SET odps.namespace.schema=true;
    SHOW schemas;

問題四:執行show schemas只有default schema

問題描述:在外部項目內執行show schemas,返回結果只有default。

解決方案

  1. 首先確認當前使用的專案是外部項目。

    1. 若用DataWorks的SQL節點,點擊右側調試配置/調試配置,查看綁定的計算資源是否為外部項目。

    2. 若用DataWorks的SQL分析,點擊右上方資料來源,查看繫結資料源是否為外部項目。

    3. 若用MaxCompute的SQL分析,點擊右側回合組態,查看計算資源處選擇的專案是否為外部項目。

    4. 若用odpscmd,查看 odps_config.ini 檔案中的project_name參數值是否為外部項目。

  2. 確認是外部項目後,登入資料湖構建(DLF)控制台確認當前外部項目綁定的catalog下是否有其他資料庫。

  3. 如以上1和2確認完成,show schemas結果仍沒有預期的資料庫,可以提交工單反饋問題。

問題五:報錯You should use dynamic bucket (bucket = -1) mode in cross partition update

問題描述:外部項目內執行show tables報錯ODPS-0110005: com.aliyun.odps.meta.exception.MetaException: com.aliyun.odps.common.table.na.NativeException: common/table/jni/utils/jni_helper.cpp(79): UnretryableException: Common table connector exception - ExceptionType: java.lang.IllegalArgumentException - Message: You should use dynamic bucket (bucket = -1) mode in cross partition update case (Primary key constraint [sending_time, symbol, sequence_number] not include all partition fields [pt]).[pt])

解決方案

MaxCompute目前不支援“固定bucket的cross partition pk表”,所以在show tables的時候會報錯。

臨時繞過方案:通過資料湖構建(DLF)控制台刪除不支援的cross partition pk表。

問題六:報錯Can't set default schema if odps.namespace.schema is false

問題描述:執行show tables/show schemas報錯 FAILED: Can't set default schema if odps.namespace.schema is false.

解決方案

  1. 優先查看SQL前是否加了session層級支援schema文法開關 SET odps.namespace.schema=true;

  2. 如果開啟開關後還是報錯,需要確認指令順序,若要讀其他外部項目的表,參數正確順序如下:

    USE external_project;
    SET odps.namespace.schema=true;
    USE schema schema_name;
    SHOW tables;

問題七:報錯Failed to connect to cn-hangzhou-intranet.dlf.aliyuncs.com

問題描述:讀 Paimon_DLF 外部項目的表報錯:Caused by: java.net.ConnectException: Failed to connect to cn-hangzhou-intranet.dlf.aliyuncs.com/xx.xx.xx.xx:80

上述報錯表示當前讀表方式需給當前執行作業的內部專案加白名單,地址為cn-hangzhou-intranet.dlf.aliyuncs.com

解決方案

  1. 通過申請連結或搜尋(DingTalk群號:11782920)加入MaxCompute開發人員社區釘群,聯絡MaxCompute支援人員團隊,將報錯地址加入白名單。

  2. 加入白名單後,需在讀表前加如下參數。

    set odps.security.outbound.intranetlist=cn-hangzhou-intranet.dlf.aliyuncs.com:80;
    set odps.internet.access.list=cn-hangzhou-intranet.dlf.aliyuncs.com:80;

資料類型映射

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.xxxxxxxxx

BOOLEAN

BOOLEAN

支援

BOOLEAN類型。

ARRAY

ARRAY

支援

複雜類型。

MAP

MAP

支援

複雜類型。

ROW

STRUCT

支援

複雜類型。

MULTISET<t>

不支援

不支援

MaxCompute側沒有映射的類型。

VARBINARY、VARBINARY(n)、BYTES

BINARY

支援

可變長度二進位字串的資料類型。