在配置单

时间:2016-06-24 04:03:18

标签: hadoop hive hql

我有一个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是巨大的。

1 个答案:

答案 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适用于大数据应用