需要摆脱HDFS中的part-m-0000 *文件

时间:2011-11-23 13:05:09

标签: java hadoop

在每个作业后的HDFS处理中,使用part-m-0000 *之类的名称创建空文件。这些文件中的每一个都是空的,但是它们占用了64MB的磁盘空间,因为这是块的默认大小。

必须更改代码才能跳过这些文件的创建。我该怎么做?

注意:我使用org.apache.hadoop.mapreduce.lib.output.MultipleOutputs<KEYOUT,VALUEOUT>来编写输出记录,而不是上下文,所以我总是在“success-m-00000”等文件中输出输出记录。

1 个答案:

答案 0 :(得分:1)

根据Hadoop : The Definitive Guide,如果文件为空,则基础文件系统不会采用HDFS块大小。

  

与单个磁盘的文件系统不同,HDFS中小于单个块的文件不会占用整个块的底层存储空间。

要禁止输出文件为空,请使用LazyOutputFormat#setOutputFormatClass。这是同样的Apache documentation