执行上述命令将schema_name对应的MaxCompute Project中的所有表同步到DLA中。

步骤一:创建MaxCompute Schema

  1. 登录DLA控制台
  2. 单击左侧导航栏的访问点管理,然后单击登录到DMS,在DMS中通过以下SQL创建Schema。
    CREATE SCHEMA maxcpmpute_test WITH DBPROPERTIES (
    catalog = 'odps',
    project = 'dla_project',
    user = '<access-key>',
    password = '<access-secret>'
    )
    参数名称 参数说明
    catalog Schema类型。
    project MaxCompute项目名称。
    user 访问MaxCompute所使用云账号对应的AccessKey。
    password 上述AccessKey对应的Access Key Secret。

步骤二:同步MaxCompute表信息

说明
  • MaxCompute中的外表无法同步到DLA中。
  • 如果MaxCompute中的表是分区表,则在DLA建表语句中,分区列会作为普通列进行定义,且分区列的定义排序在所有列之后。

方法一:通过MSCK REPAIR同步MaxCompute Project中的所有表

msck repair database <schema_name>

方法二:同步单表信息(非分区表)

您可以通过CREATE TABLE同步指定表的信息,例如通过以下SQL同步bank_data表信息。

CREATE external TABLE bank_data
(
 age             BIGINT COMMENT '年龄',
 job             STRING COMMENT '工作类型',
 marital         STRING COMMENT '婚否',
 education       STRING COMMENT '教育程度',
 default         STRING COMMENT '是否有信用卡',
 housing         STRING COMMENT '房贷',
 loan            STRING COMMENT '贷款',
 contact         STRING COMMENT '联系途径',
 month           STRING COMMENT '月份',
 day_of_week     STRING COMMENT '星期几',
 duration        STRING COMMENT '持续时间',
 campaign        BIGINT COMMENT '本次活动联系的次数',
 pdays           DOUBLE COMMENT '与上一次联系的时间间隔',
 previous        DOUBLE COMMENT '之前与客户联系的次数',
 poutcome        STRING COMMENT '之前市场活动的结果',
 emp_var_rate    DOUBLE COMMENT '就业变化速率',
 cons_price_idx  DOUBLE COMMENT '消费者物价指数',
 cons_conf_idx   DOUBLE COMMENT '消费者信心指数',
 euribor3m       DOUBLE COMMENT '欧元存款利率',
 nr_employed     DOUBLE COMMENT '职工人数',
 y               BIGINT COMMENT '是否有定期存款'
);

方法二:同步单表信息(分区表)

例如MaxCompute中有以下分区表:

CREATE TABLE IF NOT EXISTS part_datatype_test_complex (
  int_test int,
  bigint_test bigint,
  double_test double,
  string_test string,
  datetime_test datetime,
  boolean_test boolean,
  array_test array<INT>,
  map_test map<string, string>,
  struct_test_1 struct<x:INT, y:INT>,
  struct_test_2 struct<x:string, y:string>
)
partitioned by (pt bigint, region string);

DLA中对应的建表语句为:

CREATE EXTERNAL TABLE IF NOT EXISTS part_datatype_test_complex (
  int_test int,
  bigint_test bigint,
  double_test double,
  string_test string,
  datetime_test datetime,
  boolean_test boolean,
  array_test string,
  map_test string,
  struct_test_1 string,
  struct_test_2 string
)
partitioned by (pt bigint, region string);

步骤三:读取MaxCompute表数据

表创建成功后,您可以通过MySQL客户端或者MySQL命令行工具连接DLA中的MaxCompute Schema,从而通过SELECT读取MaxCompute表数据。