全部产品
云市场

背景信息以及准备工作

更新时间:2019-03-17 17:16:26

背景信息

Data Lake Analytics(简称DLA)作为云上数据处理的枢纽,通过DLA可以读取存储在阿里云对象存储服务(Object Storage Service,简称OSS)中的数据,对其进行清洗得到您需要的数据。再通过DLA将清洗后的数据写入分析型数据库(AnalyticDB),利用AnalyticDB强大的计算引擎,对数据进行毫秒级计算分析。

本文详细介绍如何通过DLA将OSS中的数据迁移至AnalyticDB。

注意:DLA支持的OSS数据格式有LOG、CSV、JSON,详情,请参见文件格式概述

DLA支持的Region和VPC对照表

目前只有以下Region的DLA支持连接AnalyticDB。要求AnalyitcDB必须开通以下表中Region对应的VPC,否则DLA无法连接AnalyticDB。

DLA Region Zone id VPC id VSwitch id
华东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

准备工作

  1. 开通DLAAnalyticDB以及OSS服务,且DLA、AnalyticDB、OSS所属Region相同。本示例中三个服务所属Region均为华东2(上海)。

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

  3. 为AnalyticDB创建VPC专有网络

  4. 如果您的AnalyticDB所属VPC与DLA相同,则跳过本步骤,继续下面的步骤。否则,可通过MySQL命令行工具或者客户端DBeaver连接AnalyticDB,执行以下SQL修改AnalyticDB VPC,使DLA能够连接AnalyticDB。本示例使用DLA在华东2(上海)的VPC。

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

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

    1. CREATE TABLE ads_database.shipping (
    2. id bigint NOT NULL COMMENT '',
    3. origin_state varchar NOT NULL COMMENT '',
    4. origin_zip varchar NOT NULL COMMENT '',
    5. destination_state varchar NOT NULL COMMENT '',
    6. destination_zip varchar NOT NULL COMMENT '',
    7. package_weight int NOT NULL COMMENT '',
    8. PRIMARY KEY (id)
    9. )
    10. PARTITION BY HASH KEY (id) PARTITION NUM 23
    11. TABLEGROUP ads
    12. OPTIONS (UPDATETYPE='realtime')
    13. COMMENT ''
    1. CREATE TABLE ads_database.order_table (
    2. customer_id bigint NOT NULL COMMENT '',
    3. order_id varchar NOT NULL COMMENT '',
    4. order_time date NOT NULL COMMENT '',
    5. order_amount double NOT NULL COMMENT '',
    6. order_type varchar NOT NULL COMMENT '',
    7. address varchar NOT NULL COMMENT '',
    8. city varchar NOT NULL COMMENT '',
    9. order_season bigint COMMENT '',
    10. PRIMARY KEY (customer_id)
    11. )
    12. PARTITION BY HASH KEY (customer_id) PARTITION NUM 32
    13. TABLEGROUP ads
    14. OPTIONS (UPDATETYPE='realtime')
    15. COMMENT ''

注意事项

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

  • 在AnalyticDB端查询写入数据时,会有一定的延迟,具体延迟时间取决于AnalyticDB中ECU的规格。

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

  • OSS数据迁移至AnalyticDB后,需要修改AnalyticDB VPC,否则除了DLA可以连接AnalyticDB以外,其他阿里云服务将无法通过AnalyticDB当前VPC访问AnalyticDB。

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

实施步骤

操作流程

  1. 创建OSS Schema和表

  2. 创建AnalyticDB Schema

  3. 创建AnalyticDB表

  4. 将OSS中的数据迁移至AnalyticDB