![](/img/trans.png)
[英]Hadoop: What to use instead of deprecated interfaces Mapper and Reducer?
[英]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.Mapper
和org.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.