Hive-删除使用ROW_NUMBER重复行()

问题描述 投票:1回答:1

如何使用ROW_NUMBER(),而不从表中列出的所有列删除重复。我有50个多列的蜂巢表。如果我想基于2列删除重复下面是我遵循的步骤

  • 创建临时表作为Create temptable as select * from (select *,row_number() over(col1,col2) as rn from maintable) where rn=1)
  • Insert overwrite table maintable select * from temptable

但在这里把它插入失败,因为新列rn存在于不是Temptable;为了避免这个专栏中,我将不得不列出列的所有的休息。

并且在蜂巢没有下降栏选项。此外,还需要使用REPLACE函数,它需要再次列出列的所有的休息。

因此,基于2列删除在蜂巢重复任何更好的主意?

hive
1个回答
1
投票

拼出从原来的表insert overwrite所有列名作为查询计算新列。需要对这个没有临时表。

Insert overwrite table maintable 
select col1,col2,col3 ---...col50 
from (select t.*
            ,row_number() over(order by col1,col2) as rn 
      from maintable
     ) t
where rn = 1
© www.soinside.com 2019 - 2024. All rights reserved.