大数据面试之hive调优

插个眼,hive的数据存储格式:推荐使用orc+snappy压缩
stored as orc tblproperties ("orc.compress"="SNAPPY");

1. 1.fetch机制
能不走mapReduce就不走。
set hive.fetch.task.conversion=more;
2. mapreduce的本地机制
如果非要执行mapReduce程序,能够本地执行的,尽量不提交yarn上执行。
默认情况下是关闭的,需要设置为true
(1)hive提供了参数,自动切换MapReduce为本地模式,如果不满足就执行yarn模式
条件(同时满足):

  1. 数据量小于128M;
  2. maptask个数少于4个;
  3. reduceTask个数是0或1

(2) 切换hive的执行引擎(稳)
尝试使用spark或者tez
3. join优化
(1)优化1:hive自动尝试选择map端join提高join效率,省去shuffle过程
一般是大表和小表
适合join时有小表(小于25M)
(2)优化2:大表join大表
走reduce端join,会发生数据倾斜
方式一:空key的过滤,此行数据不重要
方式二:空key转换
CASE WHEN a.id IS NULL THEN concat('hive', rand()) ELSE a.id --避免转换之后数据倾斜 随机分布打散
(3)优化3:桶表join提高优化效率。bucket mapjoin
分桶表:大表文件变成小文件
4. group by 数据倾斜优化
[当某些表key过多时,数据处理速度会很慢]
(1)是否在map端进行聚合,默认为true
set hive.map.aggr=true;
(2)在map端进行聚合操作的条目数目
set hive.groupby.mapaggr.checkinterval=100000;
(3)有数据倾斜的时候进行负载均衡,默认是false,需要设置成true
set hive.groupby.skewindata=true;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值