全部產品
Search
文件中心

MaxCompute:DLF+OSS外部模式

更新時間:Mar 25, 2026

MaxCompute推出DLF+OSS類型的外部Schema,通過映射DLF Legacy Catalog並配置和OSS的串連,實現中繼資料與資料的即時訪問。

功能介紹

DLF+OSS資料來源是以OSS作為資料湖儲存服務,以DLF Legacy(下文簡寫為DLF)為湖上中繼資料管理服務的常用資料湖形態。MaxCompute支援建立此類型的外部資料源。通過MaxCompute與DLF和OSS的組合,可以實現資料倉儲和資料湖的一體化,提供更加靈活和高效的資料管理和處理能力。

訪問DLF Legacy的中繼資料和OSS資料需要指定MaxCompute 外部Schema使用的,能夠訪問DLF Legacy和OSS的RAM許可權。外部Schema映射資料來源後,在MaxCompute中,則通過MaxCompute許可權體系基於對象名稱管理外部Schema內映射的資料對象。

DLF+OSS外部Schema在catalog.database層級映射使用者自己持有的OSS,需要使用者保證DLF Legacy的中繼資料與OSS資料的元資訊同步。

適用範圍

  • 地區限制:僅華東1(杭州)、華東2(上海)、華北2(北京)、華北3(張家口)、華南1(深圳)、中國香港、新加坡和德國(法蘭克福)地區支援構建湖倉一體2.0能力。

  • MaxCompute需要與DLF、OSS部署在同一地區。

  • 版本限制:執行SHOW tables IN <external_schema_name>命令訪問資料來源系統時:

    • 若在MaxCompute用戶端(odpscmd)中執行,需要V0.46.8及以上版本。可以執行SHOW VERSION;命令查看目前的版本。

    • 若在DataWorks資料開發IDE中執行,需要保證DataWorks資源群組整合的MaxCompute CMD為V0.46.8及以上版本。

操作步驟

步驟一:開通並授權

  1. 開通DLF資料湖構建

  2. 開通OSS服務

  3. 授權

    通過MaxCompute與DLF和OSS構建湖倉一體時,由於MaxCompute專案的帳號未經授權無法訪問DLF或OSS,需要先執行授權操作。授權方式包含以下兩種:

    • 一鍵授權:當建立MaxCompute專案的帳號和部署DLF、OSS的帳號相同時。推薦您直接單擊授權DLF和OSS進行一鍵授權。

    • 自訂授權:當建立MaxCompute專案的帳號和部署DLF、OSS的帳號相同或不相同,都可以使用該方式。詳情請參見自訂授權DLF

步驟二:建立DLF+OSS外部資料源

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

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

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

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

    參數

    是否必填

    說明

    外部数据源类型

    必填

    選擇DLF+OSS

    外部数据源名称

    必填

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

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

    • 不能超過128個字元。

    例如dlf_oss_schema

    外部数据源描述

    選填

    根據需要填寫。

    地域

    必填

    預設為當前地區。

    DLF Endpoint

    必填

    預設為當前地區的DLF Endpoint。

    OSS Endpoint

    必填

    預設為當前地區的OSS Endpoint。

    RoleARN

    必填

    RAM角色的ARN資訊。此角色需要包含能夠同時訪問DLF和OSS服務的許可權。

    1. 登入RAM控制台

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

    3. 基礎資訊地區,可以擷取ARN資訊。

    樣本:acs:ram::124****:role/aliyunodpsdefaultrole

    外部数据源补充属性

    選填

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

    說明

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

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

步驟三:建立DLF資料目錄及資料庫

  1. 建立DLF資料目錄

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

    2. 在左側導覽列,選擇元数据 > 元数据管理

    3. 元数据管理頁面,單擊数据目录頁簽。

    4. 新建数据目录頁面,自訂目录ID目录路径填寫OSS Bugket目錄。

      1. 目录ID樣本為external_schema_dlf_catalog

      2. 目录路径樣本為oss://external-schema/dlf-oss

  2. 建立資料庫

    1. 元数据管理頁面,單擊数据库頁簽。

    2. 在建立的数据目录下單擊新建数据库。配置如下參數:

      參數

      是否必填

      說明

      所属数据目录

      必填

      樣本為external_schema_dlf_catalog

      数据库名称:

      必填

      自訂資料庫名稱,以字母開頭,長度為1-128位,允許字元為a-z、A-Z、0-9_,例如dlf_oss_db

      数据库描述:

      選填

      自訂描述。

      选择路径:

      必填

      資料庫儲存位置,例如oss://external-schema/dlf-oss/database

步驟四:建立外部Schema

  1. 外部Schema操作需要在MaxCompute內部專案中執行,因此要求該內部專案必須已啟用支援Schema層級開關

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

    2. 项目管理頁面,單擊目標專案操作列的升级到支持Schema层级

  2. 需要在執行Schema操作或查詢External Schema的資料前,開啟SQL文法支援的Schema開關,即在SQL前增加SET odps.namespace.schema=true;語句。

  3. 在MaxCompute用戶端中,使用如下命令建立引用了DLF+OSS類型外部資料源的外部Schema:

    CREATE EXTERNAL SCHEMA IF NOT EXISTS <external_schema_name>
    with <dlfoss_foreign_server_name>
    ON '<dlf_calaog_id>.<database_name>';

    參數說明如下:

    • external_schema_name:外部Schema名稱,例如test_schema

    • dlfoss_foreign_server_name:上述已建立的外部資料源名稱,外部Schema歸屬的專案必須與外部資料源處於同一地區,樣本為dlf_oss_schema

    • dlf_calaog_id:DLF資料目錄ID,樣本為external_schema_dlf_catalog

    • database_name:DLF中指定資料目錄下的資料庫名稱,樣本為dlf_oss_db

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

建立的外部Schema支援查看Schema列表查看Schema資訊刪除Schema,其命令及使用方法與內部Schema相同。詳情請參見Schema操作

  • 列出DLF和OSS的表名稱

    • 方式1

      SHOW tables IN <external_schema_name>; --external_schema_name為外部Schema名稱。
    • 方式2

      USE SCHEMA <external_schema_name>; --external_schema_name為外部Schema名稱。
      SHOW tables;
  • 使用樣本

    • 查詢名稱為test_schema的外部Schema下的所有表名。

      USE SCHEMA test_schema;
      SHOW TABLES;

      返回結果樣本:

      ALIYUN$xxx@test.aliyunid.com:hellocsv
      ALIYUN$xxx@test.aliyunid.com:t1
      ALIYUN$xxx@test.aliyunid.com:t2
      ALIYUN$xxx@test.aliyunid.com:t3
    • 查詢test_project專案中test_schemaSchema的hellocsv表資料。

      SELECT * FROM test_project.test_schema.hellocsv;
    • 從資料來源將聯邦外表hellocsv的資料複製入數倉。

      MaxCompute不允許對來自外部Schema執行CREATE TABLE AS 操作,因此需要將Schema切換為Default,再執行如下語句:

      -- 將聯邦外表的資料複製到數倉中
      CREATE TABLE hellocsv_copy AS SELECT * FROM test_project.test_schema.hellocsv;
      
      -- 查詢數倉中已複製的表資料
      SELECT * FROM hellocsv_copy;

查看建立完成的外部資料源

在MaxCompute外部数据源列表中可以查看到已建立的外部表格和資料來源,參數資訊如下:

參數名

描述

数据源名称

外部資料源的名稱。

类型

外部資料源類型。目前支援DLF+OSS、Paimon_DLF、Hive+HDFS、Filesystem Catalog、Hologres五種類型。

网络连接

使用了網路連接的外部資料源會顯示網路連接名稱。目前只有Hive+HDFS類型支援使用網路連接。

Owner账号

建立外部資料源的帳號資訊,外部Schema等會依賴外部資料源訪問源端系統,訪問的許可權來源於外部資料源中建立者指定的身份資訊。

  • 建立者可以通過設定外部資料源與專案的掛載關係,指定哪些專案可以使用其建立的外部資料源,再由專案系統管理員通過Policy對專案內部的使用者授予使用外部資料源的許可權。

  • 未開啟專案層級租戶資源存取控制:任何建立了外部項目或外部Schema的使用者,都可以使用此外部資料源,訪問外部系統時同樣需要基於外部資料源中建立者指定的RAMRole許可權進行訪問。

已挂载项目

外部資料源掛載的專案數量。

  • 當某專案開啟專案層級租戶資源存取控制時,如果租用戶系統管理員沒有配置此專案與引用的外部資料源的掛載關係,則專案無法基於此外部資料源訪問外部系統。

  • 如果專案沒有開啟專案層級租戶資源存取控制,則不會檢查專案與引用的外部資料源的掛載關係。

创建时间

建立外部資料源的時間。

更新时间

上一次修改並儲存外部資料源可編輯屬性的時間。

操作-详情

可以查看外部資料源屬性。並在詳情頁單擊common.edit修改資料來源common.basic.info

修改了許可權等資訊,可能會造成專案內配置的授權關係因為可見物件範圍變化而失效。

操作-删除

刪除當前外部資料源。

重要

刪除外部資料源後,依賴此外部資料源的任務都會失去訪問外部系統的許可權,且一併刪除此外部資料源與所有專案之間的已配置的掛載關係。