全量数据同步
针对人员表,订单表一类表而言,该类表的变化包括更新、删除、新增。在对这个表进行同步的过程中,由于目前大数据的组件在update的功能上有所欠缺,只能使用其他方式来对大数据量的表进行同步。
这里使用阿里在大数据实践中所应用的方法:full outer join合并
+ insert overwrite
-- 最终表
create table ods_user(
uid int;
uname varchar(255);
gender varchar(255);
address varchar(255);
create_time timestamp;
);
-- 增量记录表
create table ods_user_tmp(
uid int;
uname varchar(255);
gender varchar(255);
address varchar(255);
create_time timestamp;
);
每天我们可以得到增量表ods_user_tmp
使用全外连接插入全量同步表数据(包括:新增,更新,删除)
insert overwrite table ods_user
select
case when b.uid is not null then b.uid else a.uid end as uid,
case when b.uid is not null then b.uname else a.uname end as uname,
case when b.uid is not null then b.gender else a.gender end as gendere,
case when b.uid is not null then b.address else a.address end as address,
case when b.uid is not null then b.create_time else a.create_time end as create_time
from
ods_user a
full outer join ods_user_tmp b
on a.uid = b.uid;