2013-07-11 21 views
1

是什么差分功能

ChainMapper.addMapper(conf, UpperCaserMapper.class, Text.class, IntWritable.class, Text.class, IntWritable.class, true, mapBConf); 

ChainReducer.addMapper(conf, LastMapper.class, Text.class, IntWritable.class, Text.class, IntWritable.class, true, mapCConf); 

当使用之间的差异。

另外我无法得到第7个参数的含义。 第7个参数 - >指示键/值是否应该按值传递给链中的下一个映射器(如果有)。 我知道钥匙/价值必须通过,如果其设置为true。将该值设置为false的用例可能是什么。这是什么意思?

+0

好吧我知道第七个参数意味着通过价值或通过引用。仍然有一个问题仍然是如何通过从映射器到缩减器的引用传递的。减速器可以在与映射器不同的机器上运行。请解释一下吗? –

回答

0

ChainMapper.addMapper & ChainReducer.addMapper没有这样的区别。两者都相似,因为它们将新的Mapper添加到链中。

是在于非常小的区别是: 如果你希望一个地图后添加一个映射,使用ChainMapper.addMapper 如果希望在减速后添加一个映射,使用ChainReducer.addMapper

因此,一个作业可以按顺序运行多个映射器进行预处理,在运行Reducer之后,它可以选择运行映射器来后处理数据。 因此,使用这种机制,您正在编写预处理和后处理步骤作为标准映射器。

这被象征为Map +(多Mappers) - Reduce - Map *(可选)。