繁体   English   中英

Mapper和Reducer是Hadoop版本2中的接口吗?

[英]Mapper and Reducer are interfaces in Hadoop version 2?

只是一个基本问题。我知道Mapper和Reducer是Hadoop版本2中的接口。但是仍然在编码时,我看到了使用Extended Mapper或Extended Reducer而不是Implements的示例。旧版本是否由于向后兼容? 这是我一直在研究的链接https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#MapReduce_-_User_Interfaces

不确定在该页面上的哪个位置阅读了Mapper和Reducer是MapReduce2的接口,但是该页面上的源代码显然使用了类。 关键字正在extends

import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
...
public static class TokenizerMapper extends Mapper
...
public static class IntSumReducer extends Reducer

应该提到的是org.apache.hadoop.mapred.Mapperorg.apache.hadoop.mapred.Reducer 接口,但它们应用于MapReduce1。

我认为将Mapper和Reducer重写为类的目的是简化类的创建,而无需使用像这样的extends MapReduceBase implements

class MyReducer<K extends WritableComparable, V extends Writable> 
     extends MapReduceBase implements Reducer<K, V, K, V> 

我在仔细查看API时发现了这一点。 org.apache.hadoop.mapreduce类还原器适用于Hadoop2,其中Mapper和Reducer是类,而org.apache.hadoop.mapred接口还原器存在于Hadoop 1中,它们也是在Hadoop 2中进行编译的接口。 这只是旧API与支持向后兼容性的新API之间的区别

是-Mapper和Reducer是HADOOP-1x中的类,并且在更高的HADOOP -2x版本中已增强为INTERFACE

示例-代码:

在以前的HADOOP版本中

公共静态类New_Map扩展了MapReduceBase实现Mapper {

在HADOOP-2x中

公共静态类New_Map扩展了Mapper {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM