【问题标题】:Hadoop streaming with multiple input files具有多个输入文件的 Hadoop 流式传输
【发布时间】:2015-09-04 20:47:27
【问题描述】:
我想使用 Hadoop 使用 Streaming API 从一组文件中构建一个倒排索引。文档总是提到使用一个文件,该文件的行包含要馈送的映射器的条目。但在这种情况下,我有多个输入文件,我需要映射器一次只处理一个文件。有没有办法做到这一点。出于预处理的原因,我需要输入是这样的,并且我不能在文档中引用的经典 line = key, value 格式中输入。
【问题讨论】:
标签:
hadoop
mapreduce
hadoop-streaming
【解决方案1】:
默认情况下,映射器只处理一个文件,除非您使用允许合并输入的输入类,例如 CombineFileInputFormat。
然后,如果您有 10 个文件,您将以 10 个映射器结束,每个映射器只处理一个文件。如果您只使用以 10 个输出文件(每个映射器一个)结尾的映射器(而不是缩减器)。
另一方面,如果你有足够大的可拆分文件,一个文件可能会被多个映射器同时处理。