我想在我的 MR 代码中使用组合器,比如 WordCount。
我应该如何实施?
什么类型的数据从组合器传递到化简器?
如果你们中的任何人都可以向我提供Combiner 和Reducer 的代码,那就太好了。
如果你能解释一下组合器的工作方式会更好
我是 mapreduce 的新手,我正处于学习阶段。
提前致谢 :)
combiner 和 reducer 做同样的工作,它可以实现 reducer 接口并覆盖它的 reduce 方法。如果你使用 combiner,更少的网络带宽足以将中间(映射器的 o/p)传输到 reducer。
如果您在 reducer 中使用的应用程序同时遵守 Commutative 和 Associative,您可以在组合器 reduce 方法中使用相同的 reduce 方法(属于您自己的 reducer)代码。
即使您为 MR(map reduce)应用程序编写组合器,也没有执行组合器的规则。执行组合器以确保溢出的数量至少应为 3。
例如,我的映射器输出是 ,,,,,<34>。没有组合器,我对减速器的输入是。使用组合器,我可以将输入传递给减速器,就像。
Combiner
用在mapper和reducer之间,减少map和reduce阶段之间的数据传输量。
Combiner
实现类似于reducer实现。它应该实现reduce接口的reduce方法。输入输出键值对应该和reducer类似。
在我们的驱动程序中,我们可以将我们的减速器类称为组合器
job.setCombinerClass(MyReducer.class)
Combiners
只能用于可交换和结合的函数。
For example maximum of numbers
Map 1 output - (23,27, 31) -> Combiner -> 31
Map 2 output - (22,36,33,45) -> Combiner -> 45
Map 3 output - (41,33,15,16) -> Combiner -> 41
Combiner acts on each of the mapper's output.
Combiner output - (31,45,41) ->Reducer -> 45
从示例中可以明显看出,现在减少了数据传输量。
组合器,也称为半减速器。
Combiner的主要作用是对同一个key的map输出记录进行汇总。
Combiner类用于 Map 类和 Reduce 类之间,以减少 Map 和 Reduce 之间的数据传输量
示例代码说明。
地图输入:
What do you mean by Object
What do you know about Java
What is Java Virtual Machine
How Java enabled High Performance
地图输出
<What,1> <do,1> <you,1> <mean,1> <by,1> <Object,1>
<What,1> <do,1> <you,1> <know,1> <about,1> <Java,1>
<What,1> <is,1> <Java,1> <Virtual,1> <Machine,1>
<How,1> <Java,1> <enabled,1> <High,1> <Performance,1>
此 MAP 输出将作为输入传递给组合器。
合路器输出
<What,1,1,1> <do,1,1> <you,1,1> <mean,1> <by,1> <Object,1>
<know,1> <about,1> <Java,1,1,1>
<is,1> <Virtual,1> <Machine,1>
<How,1> <enabled,1> <High,1> <Performance,1>
这个组合器输出作为输入传递给 Reducer。
减速机输出
<What,3> <do,2> <you,2> <mean,1> <by,1> <Object,1>
<know,1> <about,1> <Java,3>
<is,1> <Virtual,1> <Machine,1>
How,1> <enabled,1> <High,1> <Performance,1>
如果您使用的是 java,下面的代码会将 Combiner 和 Reducer 设置为同一类,这是理想的。
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
看看 java @tutorialspoint中的工作示例