0

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

4

2 回答 2

1

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

addInputPath() 方法可用于:

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

对于有一个 reducer,让每个映射的输出键相同……比如 1 或“abc”。这样,框架将只创建一个 reducer。

于 2012-08-30T14:02:41.340 回答
1

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

您可以通过配置 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 中的所有文件。

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

于 2012-08-30T14:03:28.797 回答