SQL/HQL中数据去重的3种方式

30万条数据的去重比较

1.distinct

select distinct * from tableName

hive用时: 40.47秒
impala用时: 11.98秒

2.group by

select c1,c2,c3,c4,c5,max(c6) c6
from tableName
group by c1,c2,c3,c4,c5

hive用时: 22.8秒
impala用时: 2.4秒

3.窗口函数( 这里选用:row_number()over() )

select * from 
	(select c1,c2,c3,c4,c5,c6,
		row_number()over(partition by c1,c2 order by c6 desc) ranking
	from tableName) tmp
where ranking = 1

hive用时: 21.41秒
impala用时: 2.5秒

总结:

distinct 效率最低,不建议使用;
group by 和 窗口函数 的去重效率高,用时差不多,根据实际情况使用.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值