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及以上版本。
操作步驟
步驟一:開通並授權
授權
通過MaxCompute與DLF和OSS構建湖倉一體時,由於MaxCompute專案的帳號未經授權無法訪問DLF或OSS,需要先執行授權操作。授權方式包含以下兩種:
步驟二:建立DLF+OSS外部資料源
登入MaxCompute控制台,在左上方選擇地區。
在左側導覽列,選擇 。
在外部数据源頁面,單擊创建外部数据源。
在彈出的新增外部数据源對話方塊,根據介面提示配置相關參數。參數說明如下:
參數
是否必填
說明
外部数据源类型
必填
選擇DLF+OSS。
外部数据源名称
必填
可自訂命名。命名規則如下:
以字母開頭,且只能包含小寫字母、底線和數字。
不能超過128個字元。
例如
dlf_oss_schema。外部数据源描述
選填
根據需要填寫。
地域
必填
預設為當前地區。
DLF Endpoint
必填
預設為當前地區的DLF Endpoint。
OSS Endpoint
必填
預設為當前地區的OSS Endpoint。
RoleARN
必填
RAM角色的ARN資訊。此角色需要包含能夠同時訪問DLF和OSS服務的許可權。
登入RAM控制台。
在左側導覽列選擇。
在基礎資訊地區,可以擷取ARN資訊。
樣本:
acs:ram::124****:role/aliyunodpsdefaultrole。外部数据源补充属性
選填
特殊聲明的外部資料源補充屬性。指定後,使用此外部資料源的任務可以按照參數定義的行為訪問源系統。
說明支援的具體參數請關注後續官網文檔更新說明,具體參數將隨產品能力演化逐步放開。
單擊確認,完成外部資料源的建立。
步驟三:建立DLF資料目錄及資料庫
建立DLF資料目錄
登入資料湖構建(DLF)控制台,在左上方選擇地區。
在左側導覽列,選擇。
在元数据管理頁面,單擊数据目录頁簽。
在新建数据目录頁面,自訂目录ID,目录路径填寫OSS Bugket目錄。
目录ID樣本為
external_schema_dlf_catalog目录路径樣本為
oss://external-schema/dlf-oss
建立資料庫
在元数据管理頁面,單擊数据库頁簽。
在建立的数据目录下單擊新建数据库。配置如下參數:
參數
是否必填
說明
所属数据目录
必填
樣本為
external_schema_dlf_catalog。数据库名称:
必填
自訂資料庫名稱,以字母開頭,長度為1-128位,允許字元為a-z、A-Z、0-9_,例如
dlf_oss_db。数据库描述:
選填
自訂描述。
选择路径:
必填
資料庫儲存位置,例如
oss://external-schema/dlf-oss/database。
步驟四:建立外部Schema
外部Schema操作需要在MaxCompute內部專案中執行,因此要求該內部專案必須已啟用支援Schema層級開關
在左側導覽列,選擇。
在项目管理頁面,單擊目標專案操作列的升级到支持Schema层级。
需要在執行Schema操作或查詢External Schema的資料前,開啟SQL文法支援的Schema開關,即在SQL前增加
SET odps.namespace.schema=true;語句。在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_catalogdatabase_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等會依賴外部資料源訪問源端系統,訪問的許可權來源於外部資料源中建立者指定的身份資訊。
|
已挂载项目 | 外部資料源掛載的專案數量。
|
创建时间 | 建立外部資料源的時間。 |
更新时间 | 上一次修改並儲存外部資料源可編輯屬性的時間。 |
操作-详情 | 可以查看外部資料源屬性。並在詳情頁單擊common.edit修改資料來源 修改了許可權等資訊,可能會造成專案內配置的授權關係因為可見物件範圍變化而失效。 |
操作-删除 | 刪除當前外部資料源。 重要 刪除外部資料源後,依賴此外部資料源的任務都會失去訪問外部系統的許可權,且一併刪除此外部資料源與所有專案之間的已配置的掛載關係。 |