当前位置:   article > 正文

Hive小文件合并

hive小文件合并

会话级Session配置

文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果文件来消除这样的影响:

  1. set hive.merge.mapfiles = true; ##在 map only 的任务结束时合并小文件
  2. set hive.merge.mapredfiles = false; ## true 时在 MapReduce 的任务结束时合并小文件
  3. set hive.merge.size.per.task = 256*1000*1000; ##合并文件的大小
  4. set mapred.max.split.size=256000000; ##每个 Map 最大分割大小
  5. set mapred.min.split.size.per.node=1; ##一个节点上 split 的最少值
  6. set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; ##执行 Map 前进行小文件合并

但凡事都有两面性,在执行的过程中多一步合并操作,实际上也会增加性能消耗;只是说这样做有利于以后使用时性能的提升。另外,这些参数在选用SPARK引擎时,并不生效;由于SPARK执行所产生的小文件问题,要另想办法解决。

全局性系统参数配置

1.先在hive-site.xml中设置小文件的标准

  1. <property>
  2. <name>hive.merge.smallfiles.avgsize</name>
  3. <value>536870912</value>
  4. <description>When the average output file size of a job is less than this number, Hive will start an additional map-reduce job to merge the output files into bigger files. This is only done for map-only jobs if hive.merge.mapfiles is true, and for map-reduce jobs if hive.merge.mapredfiles is true.</description>
  5. </property>


2.为只有map的mapreduce的输出并合并小文件

  1. <property>
  2. <name>hive.merge.mapfiles</name>
  3. <value>true</value>
  4. <description>Merge small files at the end of a map-only job</description>
  5. </property>


3.为含有reduce的mapreduce的输出并合并小文件

  1. <property>
  2. <name>hive.merge.mapredfiles</name>
  3. <value>true</value>
  4. <description>Merge small files at the end of a map-reduce job</description>
  5. </property>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/727935
推荐阅读
相关标签
  

闽ICP备14008679号