我有个问题。是否可以将我们对mapreduce程序的输入划分为几个map函数进行处理?我的意思是,我们能为每个映射函数指定一个特定的输入范围吗?
最简单的方法是使用MultipleInputs
。特别是,使用具有要在映射器类中传递的参数的addInputPath
函数。
这里有一个例子:
MultipleInputs.addInputPath(thejob, new Path(path1), TextInputFormat.class, Mapper1.class);
MultipleInputs.addInputPath(thejob, new Path(path2), TextInputFormat.class, Mapper2.class);
...
MultipleInputs.addInputPath(thejob, new Path(pathN), TextInputFormat.class, MapperN.class);
这将使Mapper1
对path1
运行,Mapper2
对path2
运行,等等
请注意,这里的限制是您的输入划分需要通过文件来完成。。。而不是输入拆分或类似的东西。最简单的方法是每个映射器有一个数据文件夹。