2014-02-26 21 views

回答

2

当isSplitable返回false时,只有一个映射器处理整个文件。

您可以提供您自己的FileInputFormat实现,并根据您的需要返回isSplitable的true/false。

+0

但是,如果我的文件大小大于块大小:例如:129MB,(最大块大小为128MB);那么即使我将isSplittable()设置为false,该文件也会分成两个块。那么这个函数有什么用呢?另外,当你的意思是说单个Mapper时,你的意思是单机/核心。对? – Sugandha

+1

这里可拆分并不意味着在HDFS存储级别(块大小适用) - 它意味着如何将INPUT分割以将其传递给映射器。 Mapper会得到整个文件(大小无关紧要)。通过单映射器 - 我不是指单机器/核心 - 我的意思是单映射器任务。请参阅:http://wiki.apache.org/hadoop/HadoopMapReduce – Jasper

+0

是的,我知道了。谢谢@Jasper – Sugandha

0

如果文件是像tar.gz或zip文件一样进行流压缩,并且当您的记录具有可变数量的行时;可能有相同记录的一部分可能落在一个块中,而另一部分记录的其余部分可能落在另一个块中。因此,用于读取记录的程序可能会崩溃。

因此,在这样的情况下,可以将isSplittable()设置为false。