我正在使用Hadoop版本0.22.0下载here。我开始根据this教程创建自定义映射器和reducer,并发现不推荐使用所有映射器类实现的接口Mapper<K1, V1, K2, V2>
。所有Reducer(至少根据the tutorial)实现的接口Reducer<K2, V2, K3, V3>
也已弃用。类似于MapReduceBase
和JobConf
的类也是如此。这些都是所有自定义映射器和缩减器所需的核心类和接口,不是吗?在javadoc中没有任何注释应该用什么来代替那些已弃用的类。
那么我应该使用哪些接口和类而不是那些被弃用的接口和类?或者我应该使用它们吗?他们为什么弃用?请告诉我发生了什么,我应该怎么做,因为我没有得到它。
答案 0 :(得分:1)
org.apache.hadoop.mapred包中的类来自旧的MR API,org.apache.hadoop.mapreduce中的类来自新API。请注意,所有类都没有从旧API移植到新API。这是SO的similar主题。
答案 1 :(得分:0)
应该使用包Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
中具有相同名称org.apache.hadoop.mapreduce
的类(不是接口!)来代替接口和基类。与reducer相同的故事:包Reducer<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
中有一个类org.apache.hadoop.mapreduce
。
我仍然不知道如何处理JobConf
等等,但是当我发现时,我会更新我的答案。
修改:将使用班级Configuration
代替JobConf
。