hive增加自动合并小文件配置以及在map阶段将多个小文件合并成一个计算。可以提高资源的利用率。
比如由于小文件原先需要启动10个map,现在只需要启动2个map。
hadoop hive 环境: hadoop2.6+hive1.2.1 lzo压缩
hive-site.xml 配置
1 | <property> |
参数说明自己查吧!
https://cwiki.apache.org/confluence/display/Hive/AdminManual+Configuration
测试的步骤
启动压缩
1 | set hive.exec.compress.output=true; |
一.减少map数,(当有大量小文件时,启动合并)
1 | set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; |
经过测试,这种设置可以在map阶段和并小文件,减少map的数量。
注意:在测试的时候,如果文件格式为Textfile,并且启用lzo压缩,不能生效。 rcfile以及orc可以生效,Textfile不启用lzo压缩也可以生效。如果是新集群的话,没有历史遗留的问题的话,建议hive都使用orc文件格式,以及启用lzo压缩。
二.MR作业结束后,判断生成文件的平均大小,如果小于阀值,就再启动一个job来合并文件
1 | set hive.merge.mapredfiles=true; |
如果你感觉文章还可以的话,请帮点点下面的广告!谢谢!