一般每个reduce输出一个文件到HDFS,如果reduce过多,则下阶段处理时就会有很多小文件。如果job只有map,没有reduce,那么可通过map输出时合并小文件。
3.1 map端合并
set hive.merge.mapfiles=true
3.2 reduce端合并
set hive.merge.mapredfiles=true
3.3 合并后文件的大小
set hive.merge.size.per.task=256*1000*1000
3.4 设置输出文件大小的平均值,当平均值小于该值时,独立启动一个作业进行合并
set hive.merge.smallfiles.avgsize=16*1000*1000