DLF+OSS外部Schema

MaxCompute推出DLF+OSS类型的外部Schema,通过映射DLF Legacy Catalog并配置和OSS的连接,实现元数据与数据的实时访问。

功能介绍

DLF+OSS数据源是以OSS作为数据湖存储服务,以DLF Legacy(下文简写为DLF)为湖上元数据管理服务的常用数据湖形态。MaxCompute支持创建此类型的外部数据源。通过MaxComputeDLFOSS的组合,可以实现数据仓库和数据湖的一体化,提供更加灵活和高效的数据管理和处理能力。

访问DLF Legacy的元数据和OSS数据需要指定MaxCompute 外部Schema使用的,能够访问DLF LegacyOSSRAM权限。外部Schema映射数据源后,在MaxCompute中,则通过MaxCompute权限体系基于对象名称管理外部Schema内映射的数据对象。

DLF+OSS外部Schemacatalog.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 CMDV0.46.8及以上版本。

操作步骤

步骤一:开通并授权

  1. 开通DLF数据湖构建

  2. 开通OSS服务

  3. 授权

    通过MaxComputeDLFOSS构建湖仓一体时,由于MaxCompute项目的账号未经授权无法访问DLFOSS,需要先执行授权操作。授权方式包含以下两种:

    • 一键授权:当创建MaxCompute项目的账号和部署DLF、OSS的账号相同时。推荐您直接单击授权DLFOSS进行一键授权。

    • 自定义授权:当创建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信息。此角色需要包含能够同时访问DLFOSS服务的权限。

    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操作

  • 列出DLFOSS的表名称

    • 方式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_schemaSchemahellocsv表数据。

      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

修改了权限等信息,可能会造成项目内配置的授权关系因为可见对象范围变化而失效。

操作-删除

删除当前外部数据源。

重要

删除外部数据源后,依赖此外部数据源的任务都会失去访问外部系统的权限,且一并删除此外部数据源与所有项目之间的已配置的挂载关系。