本文主要为您介绍不同账号之间如何实现表格存储和 MaxCompute 之间的无缝连接。

说明 如需了解同账号下的表格存储与 Maxcompute 对接操作,请参考同账号下使用 MaxCompute 访问表格存储

准备工作

跨云账号需要两个主账号,账号 A 将访问权限授予账号 B,则运行 MaxCompute 时,账号 B 可以访问账号 A 下的表数据。基本信息如下:
说明 以下信息仅为示例,在操作时请替换为实际使用的信息。
项目 表格存储 MaxCompute
主账号名 账号 A 账号 B
UserId 12345 56789

使用 MaxCompute 跨云账号访问表格存储前,您需要完成以下准备工作:

  1. 账号 B 开通MaxCompute 服务,并创建工作空间
  2. 账号 A 和 B 分别创建 AccessKey
  3. 使用账号 A 登录 RAM 控制台,并在RAM角色管理页面,新建RAM角色。在本示例中,假设创建的角色名称为 AliyunODPSRoleForOtherUser。
  4. 在RAM角色列表中,找到AliyunODPSRoleForOtherUser角色,然后单击RAM角色名称,设置策略内容。 策略内容设置如下:
    {
      "Statement": [
        {
          "Action": "sts:AssumeRole",
          "Effect": "Allow",
          "Principal": {
            "Service": [
              "1xxxx@odps.aliyuncs.com"
            ]
          }
        }
      ],
      "Version": "1"
    }
    						
    说明 请将上述策略内容中的 1xxxx 替换成您的 UID 即可。
  5. RAM角色创建后,您可以在基本信息页面查看该角色的ARN。


  6. 返回 RAM 控制台首页,进入权限策略管理页面,单击新建权限策略


  7. RAM角色管理页面,找到AliyunODPSRoleForOtherUser角色,然后单击添加权限
  8. 在添加权限页面,选择AliyunODPSRolePolicyForOtherUse权限,然后单击确定
  9. 在表格存储控制台创建实例创建数据表

    在本示例中,创建的表格存储实例和数据表信息如下:

    • 实例名称:cap1
    • 数据表名称:vehicle_track
    • 主键信息:vid (integer),gt (integer)
    • 访问域名:https://cap1.cn-hangzhou.ots-internal.aliyuncs.com
      说明 使用 MaxCompute 访问表格存储时,建议使用表格存储的私网地址。
    • 设置实例网络类型为允许任意网络访问

使用 MaxCompute 访问表格存储

跨账号访问的操作与同账号下的访问一样,只是在创建外部表时使用 roleArn。

账号 B 通过 MaxCompute 创建外部表,指定准备工作中创建出来的 roleArn 来访问表格存储。

具体操作步骤请参考同账号授权访问。其中,在步骤 2 创建外部表时,使用如下代码:

CREATE EXTERNAL TABLE ads_log_ots_pt_external
(
vid bigint,
gt bigint,
longitude double,
latitude double,
distance double ,
speed double,
oil_consumption double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption',
'tablestore.table.name'='vehicle_track',
'odps.properties.rolearn'='acs:ram::12345:role/aliyunodpsroleforotheruser'
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'
USING 'odps-udf-example.jar'