在配置MapReduce作业时使用多个InputFormat类

aa8*_*a8y 2 java hadoop mapreduce

我想编写一个可以处理文本和zip文件的MapReduce应用程序.为此,我想使用不同的输入格式,一个用于文本,另一个用于zip.有可能这样做吗?

Cha*_*guy 6

从@ChrisWhite的答案中扩展一点,你需要的是使用自定义InputFormatRecordReaderZIP文件.你可以在这里找到一个ZipFileInputFormat示例,这里有一个ZipFileRecordReader示例.

鉴于此,正如Chris建议你应该使用的MultipleInputs,如果你不需要每种类型文件的自定义映射器,我会这样做:

MultipleInputs.addInputPath(job, new Path("/path/to/zip"), ZipFileInputFormat.class);
MultipleInputs.addInputPath(job, new Path("/path/to/txt"), TextInputFormat.class);
Run Code Online (Sandbox Code Playgroud)