我有一个hive表 table_perm ,它有一百万行。日常新数据将从另一个配置单元 table_temp 附加到此表中。
假设表格如下:
table_perm
id,col2,col3,ts
1,a,b,t1
2,d,e,t1
3,g,h,t1
4,j,k,t2
5,a,e,t2
6,h,d,t2
table_temp
id,col2,col3,ts
6,h,k,t3
7,d,r,t3
8,a,h,t3
9,t,q,t3
我的最终输出应该是,
id,col2,col3,ts
1,a,b,t1
2,d,e,t1
3,g,h,t1
4,j,k,t2
5,a,e,t2
6,h,k,t3
7,d,r,t3
8,a,h,t3
9,t,q,t3
所以基本上我必须在这里验证id是否唯一然后附加数据。如果id不唯一,请附加最新记录。
考虑到table_perm非常庞大,找到唯一id值并插入table_perm的方法应该是什么,验证列id
的每个值可能很乏味。
P.S。 :列ts是时间戳,每天都会进行一次增量更新。 table_perm是巨大的。
答案 0 :(得分:0)
最好的办法是 在id上执行table_perm join table_temp。 然后通过检查ts来相应地选择字段。
select table_perm.id,IF(table_perm.ts>table_temp.ts,table_perm.col2,table_temp.col2), IF(table_perm.ts>table_temp.ts,table_perm.col3,table_temp.col3)
from table_perm join table_perm on table_perm.id=table_perm.id
Donn不担心数据的大小.Hive适用于大数据应用