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修改数据源 修改了权限等信息,可能会造成项目内配置的授权关系因为可见对象范围变化而失效。 |
操作-删除 | 删除当前外部数据源。 重要 删除外部数据源后,依赖此外部数据源的任务都会失去访问外部系统的权限,且一并删除此外部数据源与所有项目之间的已配置的挂载关系。 |