我使用MR1接口(hadoop-core-1.2.1.jar)编写了一个示例字数统计程序。映射器类定义如下,
public interface Mapper<K1, V1, K2, V2> extends JobConfigurable,
Closeable { ... }
public static class Map extends MapReduceBase implements
Mapper<LongWritable, Text, Text, IntWritable>{ ... }当我想用Mapper API (hadoop-mapreduce-client-core-2.2.0.jar)测试它时,我发现MR2被定义为一个类,
public class Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> { ... }如果我遗漏了什么,请告诉我,或者它真的在1.x中被定义为一个接口,在2.x中被定义为一个类?
发布于 2015-01-25 19:17:32
是的,Hadoop提供了两种不同的API。
Hadoop1.x的原始mapred.* API将Mapper和Reducer实现为接口。Hadoop后来被添加到mapreduce.* 2.x中,并使用类。尽管在引入mapred.*应用程序接口之后,旧的mapreduce.*应用程序接口就被弃用了,但它仍然被大量使用,因此仍然存在。
https://stackoverflow.com/questions/28123496
复制相似问题