1.设置执行引擎为Spark
set hive.execution.engine=spark;
2.设置reduce 的个数
--reduce task的个数
set mapreduce.job.reduces=2;
3.设置map的个数
减少Map个数,需要增大 set mapred.min.split.size的值,减少set mapred.map.tasks的个数;
增大Map个数,需要减少 set mapred.min.split.size的值,增大set mapred.map.tasks的个数;
4.输出合并小文件
set hive.merge.mapfiles=true;
--默认false,在map-reduce任务结束时合并小文件
set hive.merge.maprefiles=true;
--默认256M 单位b;
set hive.merge.size.per.task=268435456
5.开启数据倾斜负载均衡
set hive.groupby.skewindata=true
--处理过程:生成两个MRJob,先随机分发处理,再通过key group by 来分发处理
6.开启map端combiner
--前提是不影响最终业务逻辑
set hive.map.aggr=true;