hive3之----优化

1.Map优化

---作业会通过Input的目录产生一个或者多个map任务.set dfs.block.szie=128

---Map越多越好吗?是不是保证每个Map处理接近文件块大小?

---如何合并小文件,减少map数

set mapred.max.split.size=100000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.per.rack=1000000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

  适当增加map数

set mapred.map.tasts=10;

   提高map端的聚合性能

set  hive.map.aggr=true;

2.reduce的优化

    

--hive.exec.reducers.bytes.per.reducer;--reduce任务处理的数据量
--调整reduce的个数
   set mapred.reduce.tasks=10

    只有一个reduce的情况

             没有group by ;order  by  ;笛卡尔集

3.做分区裁剪:partition 

4.Mapjoin:--/*mapjoin(tablelist)*/,必须是小表,通常不超过1G,后者50万条记录

5.先做UNion all,在做join或者group by 等操作可以有效减少MR过程

6.join优化

       6.1尽量是有那个同一个键进行连接ON    6.2大表放后面

7.并行执行

set hive.exec.parallel=true

8.数据倾斜:万能方法set .group by .skewindata=true

你可能感兴趣的:(hive,mysql,hive)