将输入划分为多个地图

时间:2013-12-09 07:43:47

标签: hadoop mapreduce cassandra

我有一个问题。是否有可能将mapreduce程序的输入划分为多个map函数的处理?我的意思是我们可以为每个地图功能分配一个特定的输入范围吗?

1 个答案:

答案 0 :(得分:1)

最简单的方法是使用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等运行。

请注意,此处的限制是您需要通过文件来完成输入分区...而不是输入分割或类似的东西。最简单的方法是为每个映射器提供一个数据文件夹。