ODPS 数据全量/增量同步方案
背景介绍
随着业务量增加,原采用的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}