Hive知识之优化技巧

本文介绍了Hive的优化方法,包括用GROUP BY替换DISTINCT提高去重效率,使用MAPJOIN优化JOIN操作,用DISTINCT+ UNION ALL代替UNION,利用GROUPING运算符进行聚合分组,开启并发执行UNION ALL,使用函数进行行列转换,以及表连接和过滤优化。同时,针对数据倾斜问题,提出了数据倾斜的表现、原因及解决办法。
摘要由CSDN通过智能技术生成

1、用GROUP BY替换DISTINCT去重
  • 在极大的数据量且有很多重复值时,可以先 GROUP BY 去重,再使用 COUNT()计数,效率要高于 COUNT(DISTINCT)
  • 去重字段的重复值时,使用 GROUP BY 效率也会比 DISTINCT 高
SElECT user_name
FROM trade
GROUP BY user_name;
2、使用MAPJOIN
  • HSQL中涉及到多张表的JOIN,当有一张表的大小小于1G时,使用MAPJOIN可以明显的提高SQL的效率。
  • 不过需要注意的是,如果最小的表大于1G,使用MAPJOIN会出现OOM的错误。
SElECT /*+ MAPJOIN(table_a)*/,
		a.*,
		b.* 
FROM table_a a 
JOIN table_b b 
ON a.id = b.id
3、使用DISTINCT+ UNION ALL代替UNION
  • 如果遇到要使用UNION 去重的场景,使用DISTINCT+ UNION ALL比使用UNION 的效果好。
SElECT COUNT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值