获取配置单元分区之间的增量更改

2uluyalo  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(345)

我有一个夜间工作,在Hive中运行和计算一些数据。它是按天划分的。
字段:id bigint rank bigint
昨天输出/dt=2013-10-31今天输出/dt=2013-11-01
我想弄清楚,从今天到昨天,是否有一种简单的方法来实现增量更改
我想做一个左外连接,但不确定它看起来像什么,因为它是同一个表
这就是当有不同的表时的样子
从左外连接b上选择*(a.id=b.id和a.dt='2013-11-01'和b.dt='2-13-10-31'),其中a.rank=b、 军衔
但在同一张table上
从左外连接a上选择*(a.id=a.id和a.dt='2013-11-01'和a.dt='2-13-10-31'),其中a.rank=a、 军衔
建议?

ymdaylpp

ymdaylpp1#

所以我想出来了。。。使用子查询和联接
selectfrom(selectfrom table where dt='2013-11-01')a full outer join(select*from table where dt='2013-10-31')b on(a.id=b.id)where a.rank=b、 rank或a.rank为空或b.rank为空
以上将给您提供差异。。
你可以利用这个差异,找出你需要添加/更新/删除什么
更新如果a.rank=空和b级=null,即如果a.rank=null和b.rank,则删除rank changed=空,即用户不再排名添加如果a.rank=null和b.rank=null,即这是一个新用户

xhv8bpkk

xhv8bpkk2#

这就行了

SELECT a.* 
FROM A a LEFT OUTER JOIN A b ON a.id = b.id
WHERE a.dt='2013-11-01' AND b.dt='2013-10-31' AND <your-rank-conditions>;

有效地,这将只跨1个mapreduce作业。

相关问题