本文介绍如何在DLA中实现跨云账号快速分析OSS数据,即通过阿里云账号A查询分析阿里云账号B中的OSS数据。

  1. 通过阿里云账号B开通OSS服务,并上传测试数据,详情请参见开通OSS服务

    本示例在OSS Bucket的TPC-H/customer目录中上传测试数据customer.tbl

  2. 通过阿里云账号A完成开通DLA服务等准备工作,详情请参见开通DLA服务

实施步骤

步骤一:新建RAM角色

  1. 使用阿里云账号B登录RAM控制台

  2. 在左侧导航栏,单击RAM角色管理

  3. 单击新建RAM角色

  4. 可信实体类型选择阿里云服务,单击下一步

  5. 自定义角色名称备注,授信服务选择物联网

    授信服务暂时选择物联网,在修改RAM角色的信任策略中将对其进行修改。

  6. 单击完成新建RAM角色。

步骤二:修改RAM角色的信任策略

  1. 使用阿里云账号B登录RAM控制台

  2. 在左侧导航栏,单击RAM角色管理

  3. 找到创建的RAM角色名称,单击角色名。

  4. 单击信任策略管理页签,然后单击修改信任策略,将"iot.aliyuncs.com"替换为<阿里云账号A的账号ID>@openanalytics.aliyuncs.com,例如111111111@openanalytics.aliyuncs.com,其中111111111为阿里云账号A的账号ID。

  5. 单击确认,手动复制角色基本信息中的ARN信息,后续DLA中创建Schema时需使用ARN信息。

步骤三:为RAM角色添加OSS权限

  1. 使用阿里云账号B登录RAM控制台

  2. 在左侧导航栏,单击RAM角色管理

  3. 找到创建的RAM角色名称,单击角色名。

  4. 单击添加权限,如果您只需在DLA中只读访问OSS数据,则添加AliyunOSSReadOnlyAccess策略即可;如果您需要在DLA中执行INSERT OVERWRITE等数据更新操作,则添加AliyunOSSFullAccess策略,然后单击确定

经过上述操作,阿里云账号A已经具备在DLA中创建OSS(阿里云账号B所有) Schema和表的权限。

步骤四:创建OSS Schema

  1. 使用阿里云账号ADLA控制台

  2. 单击左侧导航栏的访问点管理,然后单击登录DMS,输入DLA数据库账号和密码登录DMS,通过以下SQL创建OSS Schema。

    您也可以通过MySQL命令行工具、客户端或者程序代码连接DLA,然后创建Schema,详情请参见连接DLA

    ​CREATE SCHEMA tpch_schema1 with DBPROPERTIES(
    catalog='oss',
    location = 'oss://your-oss-bucket-name/TPC-H/',
    cross_account_accessing_arn= 'acs:ram::14069264740****:role/for-dla-cross-account'  
    );​
  3. 在tpch_schema1中创建CUSTOMER表对应的外表。

    ​ CREATE EXTERNAL TABLE customer (
         `c_custkey` int,
         `c_name` string,
         `c_address` string,
         `c_nationkey` int,
         `c_phone` string,
         `c_acctbal` double,
         `c_mktsegment` string,
         `c_comment` string
     )
     ROW FORMAT DELIMITED
         FIELDS TERMINATED BY '|'
     STORED AS `TEXTFILE`
     LOCATION 'oss://your-oss-bucket-name/TPC-H/customer'​

    外表创建成功后,您就可以查询表数据,实现跨云账号访问OSS数据。