背景介绍

随着业务量增加,原采用的mysql 对大量业务数据的处理效率降低,公司采购的ODPS(MaxCompute) 阿里数据处理平台,进行数据的处理。

一、源数据库 -> ODPS

全量同步,直接同步即可,这里主要介绍下增量过程,分为以下三步。

// 第一步、覆盖基表 插入非 变更/新增 的数据
INSERT OVERWRITE table tb_order_summary_odps
select * from middle_tb_order_summary_odps 
where id not in (select id from trans_tb_order_summary_odps);

// 第二步、插入基表 插入 变更/新增 的数据
insert into tb_order_summary_odps 
select * from trans_tb_order_summary_odps;

// 第三步、插入中间表,基表数据覆盖插入中间表
insert OVERWRITE table middle_tb_order_summary_odps 
select * from tb_order_summary_odps;
二、ODPS -> 源数据库

手动全量数据同步 基本思想:将指定时间之前的数据与昨天数据汇总,作为最新的数据集,${bizdate} 获取指定日期。

INSERT OVERWRITE TABLE tb_order_summary
SELECT  *
FROM    tb_order_summary
WHERE   business_date > ${bizdate}
UNION ALL
SELECT *
from tb_order
WHERE
created_time <= ${bizdate}

定时增量同步前一天数据 基本思想:将昨天之前数据与昨天数据汇总,作为最新的数据集,运用 ${bdp.system.bizdate} 动态获取昨天。

INSERT OVERWRITE TABLE tb_order_summary
SELECT  *
FROM    tb_order_summary
WHERE   business_date != ${bdp.system.bizdate}
UNION ALL
SELECT *
FROM tb_order
WHERE 
created_time = ${bdp.system.bizdate}