1)map join(默认是开启的)
2)分区,分桶
3)合理设置map个数,合理设置reduce个数
4)优化小文件(合并小文件)
在Map执行前合并小文件,减少Map数:CombineHiveInputFormat具有对小文件进行合并的功能
Map输入合并小文件
对应参数:
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; #执行Map前进行小文件合并
set mapred.max.split.size=256000000; #每个Map最大输入大小
set mapred.min.split.size.per.node=100000000; #一个节点上split的至少的大小
set mapred.min.split.size.per.rack=100000000; #一个交换机下split的至少的大小
5)常用参数
输出合并小文件
set hive.merge.mapfiles = true 默认true,在map-only任务结束时合并小文件
set hive.merge.mapredfiles = true 默认false,在map-reduce任务结束时合并小文件
set hive.merge.size.per.task = 256*1000*1000 #合并文件的大小
set hive.merge.smallfiles.avgsize=16000000当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge
7)行列过滤
【注】数据量大的使用mr引擎,数据量小,要求计算快的使用tez引擎,基于内存的计算。