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 个参数 --> 指示键/值是否应按值传递给链中的下一个 Mapper(如果有)。我知道如果设置为 true,则必须传递键/值。将值设置为 false 的用例可能是什么。这是什么意思?

4

1 回答 1

0

ChainMapper.addMapper 和 ChainReducer.addMapper 之间没有这样的区别。两者彼此相似,因为它们正在向链中添加新的映射器。

一个很小的区别在于:如果你想在 Map 之后添加一个 Mapper,你使用 ChainMapper.addMapper 如果你想在 Reducer 之后添加一个 Mapper,你使用 ChainReducer.addMapper

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

这被符号化为 Map+(多个 Mappers) - Reduce - Map*(可选)。

于 2014-05-02T00:59:27.470 回答