java—在配置mapreduce作业时使用多个inputformat类

nkkqxpd9  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(314)

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

puruo6ea

puruo6ea1#

查看api文档中的多个输入(旧api、新api)。这不是很简单,但是您应该能够看到在作业配置中调用addinputpath方法并配置输入路径(可以是glob、输入格式和关联的Map器)。
你应该可以在谷歌上搜索一些例子,事实上这里有一个问题/答案,显示了一些用法

osh3o9ms

osh3o9ms2#

考虑写一个习惯 InputFormat 您可以检查正在读取的输入类型,然后根据检查调用所需的 InputFormat

u7up0aaq

u7up0aaq3#

从@chriswhite的答案中延伸出一点,您需要的是使用一个定制的 InputFormat 以及 RecordReader 可以处理zip文件。您可以在这里找到一个示例zipfileinputformat和一个示例zipfilerecordreader。
考虑到这一点,克里斯建议你应该 MultipleInputs ,如果您不需要为每种类型的文件使用自定义Map器,我会这样做:

MultipleInputs.addInputPath(job, new Path("/path/to/zip"), ZipFileInputFormat.class);
MultipleInputs.addInputPath(job, new Path("/path/to/txt"), TextInputFormat.class);

相关问题