码迷,mamicode.com
首页 > 其他好文 > 详细

hive优化

时间:2014-07-28 15:04:23      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:文件   数据   new   size   app   table   file   user   

1、列裁剪
 select a,b from t where e < 10;
 设置参数:
 hive.optimize.cp = true
2、分区裁剪
 select * from (
  select c1,count(1) from t group by c1
 ) subq
 where subq.prtn = 100;
 select * from T1 join(
  select * from t2
 ) subq on (t1.c1=subq.c2)
 where subq.prtn = 100;
 设置参数:
 hive.optimize,pruner = true
3、join操作
 原则:将条目少的表、子查询放在join操作的左边,原因reduce端join时,join左边的表会被加载到内存中,有效减少内存溢出。
 insert overwrite table pv_users
 select pv.pageid,u.age from page_view pv
  join user u on (pv.userid = u.userid)
  join newuser x on (pv.userid = x.userid);

 如果join的key一样,可以优化为一个mapreduce处理
4、map join 操作
 map join无需reduce就可以在map阶段全部完成,前提是在map过程中可以访问到全部需要的数据
 insert overwrite table pv_users
  select /*+ MAPJOIN(pv) */ pv.pageid,u.age
  from page_view pv join user u on (pv.userid = u.userid);
 设置参数:
 hive.join.emit.interl = 1000
 hive.mapjoin.size.key = 10000
 hive.mapjoin.cache.numrows = 10000
 hive.join.emit.interl = 1000
5、group by
 1/map端部分聚合
  hive.map.aggr = true
  hive.groupby.mapaggr.checkinterval = 10000设定mapper进行聚合的记录数
 2、数据倾斜时进行负载均衡
  hive.groupby.skewindata = true
  生成两个mapreduce,
  第一个MR,map输出的数据随机分布到reduce进行部分聚合,达到负载均衡
  第二个MR,按照group by key分布到reduce中
6、合并小文件
 hive.merge.mapfiles = true
 hive.merge.mapredfiles = true
 hive.merge.size.per.task = 256*1000*1000
 
 

hive优化,布布扣,bubuko.com

hive优化

标签:文件   数据   new   size   app   table   file   user   

原文地址:http://www.cnblogs.com/jsunday/p/3872775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!