如何在Hive中重复数据删除文件并维护原始排序顺序?

时间:2016-03-10 21:38:09

标签: sorting hadoop hive mapreduce bigdata

我的数据已按降序last_column和降序third_column排序。我想在保持原始排序顺序的同时,基于last_column对数据集进行重复数据删除。所以对于每个last_column,我想要最终输出中的第一行。 我需要使用Hive实现这一目标。 我的数据是:

10009,12/3/1959,Rodney,Purtle,M,8/28/1986,d007
10010,5/1/1954,Ahishek ,Kumar,M,12/1/1986,d007
10011,1/21/1955,Abhilash,Whatever,M,9/12/1989,d007
10016,5/1/1954,Ross,Hupchuck,M,12/1/1986,d006
10008,1/21/1955,Michael ,Gross,M,9/12/1989,d006
10014,1/21/1955,John ,Talburt,M,9/12/1989,d006
10013,5/1/1954,John,Doe,M,12/1/1986,d006
10015,12/3/1959,Daniel ,Pullen,M,8/28/1986,d006

期望的输出:

10009,12/3/1959,Rodney,Purtle,M,8/28/1986,d007
10016,5/1/1954,Ross,Hupchuck,M,12/1/1986,d006

我目前的代码:

select * 
from 
(select *, row_number() over (partition by last_column order by desc)as r from table_name)s 
where r = 1;

我得到的输出是:

10014   1/21/1955   John    Talburt M   9/12/1989   d006    1
10010   5/1/1954    Ahishek     Kumar   M   12/1/1986   d007    1

任何人都可以帮忙并建议我可能做错了吗?

1 个答案:

答案 0 :(得分:1)

@Utsav您可以尝试以下查询:

select * from(select *,row_number()over(partition by last_column order by third_column desc)as r from table_name)s其中r = 1 order by last_column desc;

希望它有所帮助!