背景信息以及准备工作

数据湖分析 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-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****';