数据湖分析 DLA(Data Lake Analytics)作为云上数据处理的枢纽,通过DLA可以读取存储在对象存储服务 OSS(Object Storage Service)中的数据,对其进行清洗后再通过DLA将结果数据写入AnalyticDB for MySQL 2.0,通过AnalyticDB for MySQL 2.0强大的计算引擎,对数据进行毫秒级计算分析。

说明 DLA支持的OSS数据格式有LOG、CSV、JSON。

您需要根据DLA和AnalyticDB for MySQL 2.0所属Region,分别在AnalyticDB for MySQL 2.0和DLA中创建相同的VPC,DLA通过AnalyticDB for MySQL 2.0的VPC地址连接AnalyticDB for MySQL 2.0。

华东1(杭州) cn-hangzhou-g vpc-bp1g66t4f0onrvbht2et5 vsw-bp1nh5ri8di2q7tkof474
华东2(上海) cn-shanghai-d vpc-uf6wxkgst74es59wqareb vsw-uf6m7k4fcq3pgd0yjfdnm
华北2(北京) cn-beijing-g vpc-2zeawsrpzbelyjko7i0ir vsw-2zea8ct4hy4hwsrcpd52d
华北3(张家口) cn-zhangjiakou-a vpc-8vbpi1t7c0devxwfe19sn vsw-8vbjl32xkft0ewggef6g9
华南1(深圳) cn-shenzhen-a vpc-wz9622zx341dy24ozifn3 vsw-wz91ov6gj2i4u2kenpe42
新加坡 ap-southeast-a vpc-t4n3sczhu5efvwo1gsupf vsw-t4npcrmzzk64r13e3nhhm
英国(伦敦) eu-west-1a vpc-d7ovzdful8490upm8b413 vsw-d7opmgixr2h34r1975s8a
日本(东京) ap-northeast-1b vpc-6weiev04rkbhguxqnnh2c vsw-6wei487pduzx7753blrfr
美国(即佛尼亚) us-east-1a vpc-0xiarsc9sd2sen1kmii71 vsw-0xi31nno1mx2rb1sk1u3k
美国(硅谷) us-west-1a vpc-rj98sujw7ms8kkpdv9hak vsw-rj9o2vqz0xjbj9cmjqeiv
中国(香港) cn-hongkong-b vpc-j6cotfjiboiskto4htqga vsw-j6cv4uyb6qybxnpjzph2p
德国(法兰克福) eu-central-1b vpc-gw8mxe263blkfaurn81ej vsw-gw8j7409kagfk3rdjwdak
印度(孟买) ap-south-1a vpc-a2d9k64h6zy80akzvnhyf vsw-a2d6wrycvxb71rszsnpc8
澳大利亚(悉尼) ap-southeast-2b vpc-p0wsvf29xy47hbsw9440g vsw-p0w5t4q4pmu8pjj3z5s81

准备工作

  1. 开通DLAAnalyticDB for MySQL 2.0以及OSS服务,且DLA、AnalyticDB for MySQL 2.0、OSS所属Region相同。

  2. 在DLA中创建服务访问点,即创建VPC专有网络。详情,请参见创建服务访问点

  3. 在AnalyticDB for MySQL 2.0中创建VPC,DLA将通过AnalyticDB for MySQL 2.0的VPC地址连接AnalyticDB for MySQL 2.0,详情请参见。

  4. 如果您的AnalyticDB所属VPC与DLA相同,则跳过本步骤,继续下面的步骤。否则,可通过MySQL命令行工具或者客户端DBeaver等连接AnalyticDB for MySQL 2.0,执行以下SQL修改AnalyticDB for MySQL 2.0的VPC,使DLA能够连接AnalyticDB for MySQL 2.0。

    ALTER DATABASE ads_database set zone_id='cn-shanghai-d' vpc_id='vpc-uf6wxkgst74es59wqareb' vswitch_id='vsw-uf6m7k4fcq3pgd0yjfdnm';
  5. 在AnalyticDB for MySQL 2.0中创建实时表,用于存储OSS数据。

    本示例中的表为shipping和order_table表,表结构信息如下所示。

    ​CREATE TABLE ads_database.shipping (
    id bigint NOT NULL COMMENT '',
    origin_state varchar NOT NULL COMMENT '',
    origin_zip varchar NOT NULL COMMENT '',
    destination_state varchar NOT NULL COMMENT '',
    destination_zip varchar NOT NULL COMMENT '',
    package_weight int NOT NULL COMMENT '',
    PRIMARY KEY (id)
    )
    PARTITION BY HASH KEY (id) PARTITION NUM 23
    TABLEGROUP ads
    OPTIONS (UPDATETYPE='realtime')
    COMMENT ''​
    ​ CREATE TABLE ads_database.order_table (
       customer_id bigint NOT NULL COMMENT '',
       order_id varchar NOT NULL COMMENT '',
       order_time date NOT NULL COMMENT '',
       order_amount double NOT NULL COMMENT '',
       order_type varchar NOT NULL COMMENT '',
       address varchar NOT NULL COMMENT '',
       city varchar NOT NULL COMMENT '',
       order_season bigint COMMENT '',
       PRIMARY KEY (customer_id)
     )
     PARTITION BY HASH KEY (customer_id) PARTITION NUM 32
     TABLEGROUP ads
     OPTIONS (UPDATETYPE='realtime')
     COMMENT ''​

注意事项

  • AnalyticDB for MySQL 2.0为主键覆盖逻辑,若整个INSERT FROM SELECT的ETL任务失败,需要整体重试。

  • 在AnalyticDB for MySQL 2.0中查询数据时,存在一定的延迟,延迟时长取决于AnalyticDB for MySQL 2.0中的ECU规格。

  • 建议将ETL任务尽量切成小的单位分批执行。例如,OSS中的数据为200GB,在业务允许的情况下,200GB的数据切分为100个文件夹,每个文件夹存储2GB数据。在DLA中创建100张表,100张表分别做ETL,单个ETL任务失败,只重试单个ETL任务。

  • OSS数据写入AnalyticDB for MySQL 2.0后,需要修改AnalyticDB for MySQL 2.0的VPC地址,否则除了DLA可以连接AnalyticDB for MySQL 2.0以外,其他阿里云服务将无法通过AnalyticDB for MySQL 2.0的当前VPC地址访问AnalyticDB for MySQL 2.0。

    ALTER DATABASE ads_database set zone_id='cn-shanghai-d' vpc_id='vpc-uf6wxkgst*****' vswitch_id='vsw-uf6m7k4fcq3pgd0y****';