一、产生小文件的原因
1、hive分区可能会产生小文件
2、reduce过多会产生过多的结果小文件
3、其他
二、map端的输入合并
set hive.input.format=org.apache.Hadoop.hive.ql.io.CombineHiveInputFormat
三、输出端的合并
配置 | 解释 |
---|---|
set hive.merge.mapfiles=true | map only job结束时合并小文件 |
set hive.merge.mapredfiles=true | 合并reduce输出的小文件 |
set hive.merge.smallfiles.avgsize=256000000 | 当输出文件平均大小小于该值,启动新job合并文件 |
sethive.merge.size.per.task=64000000 | 合并之后的每个文件大小64M |