`
sunasheng
  • 浏览: 119265 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Hive的优化

阅读更多

该博客已经完全转移到http://sunhs.me

 

中并增加更多新的技术内容(hadoop为

 

主),欢迎访问!

1.列裁剪
    查询时我只关心用到的那几个列。
    需要设置:hive.optimize.cp = true
2.分区裁剪
    查询过程中减少不必要的分区。
    需要设置:hive.optimize.pruner = true
3.join
    join操作在recude阶段join左边表中的内容会被加载到内存中,将数据少的表放在左边可以减少内存溢出的发生。
4.map join
    map join无需reduce操作就可以在map阶段全部完成,前提是在map阶段能够访问到全部需要的数据。
5.group by
    map端部分聚合:
         需要设置:    
              hive.map.aggr = true    设定是否在map端进行聚合  默认为true
              hive.groupby.mapaggr.checkinterval =  10000  设定在map端进行聚合操作的条目数
    有数据倾斜时进行负载均衡:
         需要设置:
              hive.groupby.skewindata  = true  生成的查询计划会有两个mapreduce任务,第一个任务中的map输入会随机分到reduce中,对每个reduce做部分聚合,这样处理的结果是:相同的group by key有可能被分发到不同的reduce中,从而达到负载均衡的目的。第二个任务再根据预处理数据结果按照group by key分布到reduce中。
6.合并小文件
    合并map和reduce的中间结果文件来提高效率
    需要设置:
             hive.merge.mapfiles = true              设定是否合并map输出文件  默认是true
             hive.merge.mapredfiles = false        设定是否合并reduce输出文件  默认是flase
             hive.merge.size.per.task = 256*1000*1000     设定合并文件的大小
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics