我需要这样的东西:
例如,映射器输入需要三个文件:file01,file02和file03。 存储在本地磁盘中的配置参数还有三个文件:r1,r2和r3。
映射器程序首先处理r1,r2和r3并生成三个不同的程序实例p1,p2和p3(相同的处理算法,但具有不同的参数,因此不同的实例)。
我想要的是 p1只处理file01,p2只处理file02而p3只处理file03 。也就是说,三个从节点以相同的方式处理,但输入和输出不同,是吗?
为什么我需要这个?因为r1,r2和r3实例非常大,如果组合成一个实例,计算速度太慢。据我所知,这种需求无法在Hadoop上实现,因为映射器输入文件似乎无法区分。有关于此的任何想法? 提前谢谢。
答案 0 :(得分:1)
我认为MultipleInputs是处理这个问题的完美类。基本上它允许您让不同的映射器处理不同的数据(您也可以指定不同的输入格式)。
语法是: MultipleInputs.addInputPath(工作,inputPath,SequenceFileInputFormat.class,MyMapper.class); //如果它们都使用相同的映射器
,则无需指定映射器