HIVE周期合数功能

本文介绍了一种使用Hive实现周期合数的方法,通过DataX抽取临时表,对比原表,识别并发送需要纠正的数据至Kafka进行统一Sink。详细讲解了INSERT、UPDATE操作的SQL实现。

最近需要做一个hive周期合数的功能,考虑了一下,记录一下实现实现。

实现思路:使用datax抽取一张临时表 c.o_a_l_mytable,用临时表和原表o.o_a_l_mytable进行比对,将需要纠正的数据查询出,发送KAFKA等,统一进行数据Sink。

1. INSERTUPDATE(已验证)

-- 获取insert及delete数据
select max(rowkey), max(aa), bb, max(cc), max(remark), max(timestamp), max(datatype) datatype from (
select 'DELETE_CHK' datatype, rowkey, bb from o.o_m_l_mytable a 
union all
select 'INSERT_CHK' datatype, rowkey, bb from c.o_a_l_mytable b
)m
group by bb having count(*)=1

2. UPDATE(待验证)

思路:使用LEFT JOIN, 将条件作为on的关联条件进行比对

-- 通过左连接判断对应的值cutime是否相等,连接表对应的字段为null则不相等,将数据捞出,并把原数据和现在的数据取出
with temp3 as(
SELECT m.rowkey, m.id from o.o_m_l_mytable m LEFT JOIN c.o_a_l_mytable c ON m.id=c.id and m.cutime=c.cutime
where c.cutime is null)
select m.*, 'DELETE' dbtype from o.o_m_l_mytable m JOIN temp3 ON m.rowkey=temp3.rowkey
UNION
select c.*, 'ISNERT' dbtype from  c.o_a_l_mytable c JOIN temp3 on c.id=temp3.id

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值