您可以在DLA中创建OSS对应的Schema和文件表,对OSS中不同类型的文件数据进行清洗,然后将得到的结果数据写入AnalyticDB for MySQL 3.0,使得您可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索。
-
. 在同一地域开通数据湖分析 DLA(Data Lake Analytics)服务、AnalyticDB for MySQL 3.0以及对象存储服务 OSS(Object Storage Service)服务。
-
在AnalyticDB for MySQL中创建数据库和表,用于存储OSS数据,请参见CREATE DATABASE、CREATE TABLE。
表结构信息如下所示。
CREATE TABLE 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) ) DISTRIBUTED BY HASH (id) COMMENT ''
CREATE TABLE order_table ( customer_id bigint NOT NULL COMMENT '', order_id varchar NOT NULL COMMENT '', order_time timestamp 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,order_time) ) DISTRIBUTED BY HASH(customer_id) PARTITION BY VALUE(DATE_FORMAT(order_time, '%Y%m%d')) LIFECYCLE 30 COMMENT ''
注意事项
-
AnalyticDB for MySQL为主键覆盖逻辑,若整个INSERT FROM SELECT的ETL任务失败,需要整体重试。
-
在AnalyticDB for MySQL端查询写入数据时,会有一定的延迟,具体延迟时间取决于AnalyticDB for MySQL的集群配置。
-
建议将ETL任务尽量切分为小的单位分批执行。例如200GB的OSS数据,在业务允许的情况下,200GB的数据切分为100个文件夹,每个文件夹2GB数据。在DLA中建100张表,100张表分别做ETL,单个ETL任务失败,只重试单个ETL任务。