问题一:Hive中小文件如何产生的?
-
动态分区插入数据,产生大量的小文件,从而导致map数据剧增;
-
Reduce数据量越多,小文件也就越多(Reduce的个数和输出文件是对应的);
-
数据源本身就包含大量的小文件;
问题二:会产生哪些影响?
-
从Hive角度来看,小文件会开很多map,一个map开一个JVM去执行,所以这些任务的初始化,启动,执行会浪费大量的资源,严重影响性能。
-
在HDFS中,每个小文件对象约150byte,如果小文件过多会占用大量的内存。这样NameNode内存容量严重制约了集群的扩展。
问题三:小文件过多的解决方案
-
使用Sequencefile作为表存储格式,可以一定程度