Hadoop读取整个文件并发送给许多映射器

时间:2014-01-01 06:02:22

标签: hadoop mapper

我正在编写一个hadoop应用程序,我希望将输入文件作为一个整体读取并发送给manny mappers并让每个映射器完成部分工作。这是我的FileInputFormat。我必须让isSplitable返回false,以便我可以读取整个文件。但是,这会导致只初始化one mapper。是否有人可以告诉我如何整体读取输入文件并将其发送给多个映射器进行处理?

public class WholeFileInputFormat extends FileInputFormat<PairWritable, BytesWritable> {
    @Override
    protected boolean isSplitable(FileSystem fs, Path filename) {
        return false;
    }

    @Override
    public RecordReader<PairWritable, BytesWritable> getRecordReader(
      InputSplit split, JobConf job, Reporter reporter) throws IOException {
        return new WholeFileRecordReader((FileSplit) split, job);
    }
}

1 个答案:

答案 0 :(得分:3)

向WholeFileInputFormat添加getSplits的实现,返回任意数量的重复项。