hive中去重的操作
1:distinct
SELECT DISTINCT * FROM 表
在hive中distinct必须只有一个reduce才能完成整体的去重,效率极低,不能使用
2:group by
不会数据倾斜,可以使用多个reduce,但是需要查询什么字段就需要在group by跟上什么字段
3:row_number() over()
分组后取第一条数据
with t as (
select * ,row_number() over(partition by id) rk from 表
)
select * from t where rk =1;
rank() dense_rank() 在存在重复数据的时候会打上相同的编号,所以只能使用row_number()