大数据增量加载

--结果表

 create table dw_user_inc(

uid bigint,

uname string,

deptno bigint,

gender string,

optime DATETIME );

 

--增量记录表 

create table ods_user_inc(

uid bigint,

uname string,

deptno bigint,

gender string,

optime DATETIME );

 

insert overwrite table dw_user_inc select 

--所有select操作,如果ODS表有数据,说明发生了变动,以ODS表为准

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.deptno else a.deptno end as deptno,

case when b.uid is not null then b.gender else a.gender end as gender,

case when b.uid is not null then b.optime else a.optime end as optime

from dw_user_inc a

full outer join ods_user_inc b

on a.uid = b.uid ;

 

对比以上两种同步方式,可以很清楚看到两种同步方法的区别和优劣。第二种方法的优点是同步的增量数据量比较小,但是带来的缺点有可能有数据不一致的风险,而且还需要用额外的计算进行数据合并。如无必要,会变化的数据就使用方法一即可。果对历史数据希望只保留一定的时间,超出时间的做自动删除,可以设置Lifecycle。

这个场景,由于数据生成后就不会发生变化,因此可以很方便地根据数据的生成规律进行分区,较常见的是根据日期进行分区,比如每天一个分区。
做法是按日期字段 where 过滤所需日期,增量 insert。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值