Mapper 和 Reducer 是 Hadoop 版本 2 中的接口吗?
Mapper and Reducer are interfaces in Hadoop version 2?
只是基本 question.I 知道 Mapper 和 Reducer 是 Hadoop 版本 2 中的接口。但是在编码时我仍然看到使用 extends mapper 或 extends reducer 的示例而不是 implements。这是有原因的,还是由于向后兼容性而在旧版本中实现?这是我一直在学习的 link
https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#MapReduce_-_User_Interfaces
不确定您在该页面上的哪个位置读到 Mapper 和 Reducer 是 MapReduce2 的接口,但该页面上的源代码清楚地使用了 classes。关键字是 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 重写为 classes 的目的是为了简化 class 创建,而不像这样 extends MapReduceBase implements
class MyReducer<K extends WritableComparable, V extends Writable>
extends MapReduceBase implements Reducer<K, V, K, V>
我在仔细查看 API 时发现了这一点。
org.apache.hadoop.mapreduce
Class Reducer 适用于 Hadoop2,其中 Mapper 和 Reducer 是 Classes 并且 org.apache.hadoop.mapred Interface Reducer 在 Hadoop 1 中它们也是在 Hadoop 2 中编译的接口。只是老款API和支持向后兼容的新款的区别
是 -Mapper 和 Reducer 在 HADOOP-1x 中 classes 并且在后来的 HADOOP -2x 版本中已增强为 INTERFACE
示例代码:
在之前的HADOOP版本中
public static class New_Map extends MapReduceBase implements Mapper{
在 HADOOP-2x
public 静态 class New_Map 扩展映射器{
只是基本 question.I 知道 Mapper 和 Reducer 是 Hadoop 版本 2 中的接口。但是在编码时我仍然看到使用 extends mapper 或 extends reducer 的示例而不是 implements。这是有原因的,还是由于向后兼容性而在旧版本中实现?这是我一直在学习的 link https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#MapReduce_-_User_Interfaces
不确定您在该页面上的哪个位置读到 Mapper 和 Reducer 是 MapReduce2 的接口,但该页面上的源代码清楚地使用了 classes。关键字是 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 重写为 classes 的目的是为了简化 class 创建,而不像这样 extends MapReduceBase implements
class MyReducer<K extends WritableComparable, V extends Writable>
extends MapReduceBase implements Reducer<K, V, K, V>
我在仔细查看 API 时发现了这一点。 org.apache.hadoop.mapreduce Class Reducer 适用于 Hadoop2,其中 Mapper 和 Reducer 是 Classes 并且 org.apache.hadoop.mapred Interface Reducer 在 Hadoop 1 中它们也是在 Hadoop 2 中编译的接口。只是老款API和支持向后兼容的新款的区别
是 -Mapper 和 Reducer 在 HADOOP-1x 中 classes 并且在后来的 HADOOP -2x 版本中已增强为 INTERFACE
示例代码:
在之前的HADOOP版本中
public static class New_Map extends MapReduceBase implements Mapper{
在 HADOOP-2x
public 静态 class New_Map 扩展映射器{