数据湖分析 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 |
准备工作
开通DLA、AnalyticDB for MySQL 2.0以及OSS服务,且DLA、AnalyticDB for MySQL 2.0、OSS所属Region相同。
在DLA中创建服务访问点,即创建VPC专有网络。详情,请参见创建服务访问点。
在AnalyticDB for MySQL 2.0中创建VPC,DLA将通过AnalyticDB for MySQL 2.0的VPC地址连接AnalyticDB for MySQL 2.0,详情请参见。
如果您的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';
在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****';