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 设定合并文件的大小
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。