2012-08-30 43 views
0

我是hadoop的新手。我有包含文件的多个文件夹来处理hadoop中的数据。我怀疑要在map-reducer算法中实现mapper。我可以指定多个映射器来处理多个文件,并将所有输入文件作为一个输出使用一个reducer吗?如果可能的话,请为实施上述步骤提供指导。在hadoop中实现多个mapper和单个reducer

回答

1

如果您有多个文件,使用MultipleInputs

addInputPath()方法可用于:

  1. 添加多个路径和一个共同的映射器实现
  2. 添加自定义映射器和输入多路格式实现。

对于具有单个缩减器,让每个映射的输出键相同...说1或“abc”。这样,框架将只创建一个reducer。

0

如果要以相同的方式映射文件(例如,它们都具有相同的格式和处理要求),那么您可以配置一个映射器来处理所有这些文件。

您可以通过配置的TextInputFormat类做到这一点:

string folder1 = "file:///home/chrisgerken/blah/blah/folder1"; 
string folder2 = "file:///home/chrisgerken/blah/blah/folder2"; 
string folder3 = "file:///home/chrisgerken/blah/blah/folder3"; 
TextInputFormat.setInputPaths(job, new Path(folder1), new Path(folder2), new Path(folder3)); 

这将导致所有的文件夹1,2和3的文件映射器正在处理中。

当然,如果您需要使用不同的输入类型,则必须适当地配置该类型。

相关问题