不推荐使用MapReduceBase和Mapper

public static class Map extends MapReduceBase implements Mapper 

Hadoop 0.20.203中不推荐使用MapReduceBaseMapperJobConf

我们现在应该用什么?

编辑1 – 对于MapperMapReduceBase ,我发现我们只需要扩展Mapper

 public static class Map extends Mapper  { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } } 

编辑2 – 对于JobConf我们应该使用如下配置:

 public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = new Job(conf); job.setMapperClass(WordCount.Map.class); } 

编辑3 – 我根据新的API找到了一个很好的教程: http : //sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html

Javadoc包含有关使用这个已删除类的instaed的信息:

例如http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/JobConf.html

  Deprecated. Use Configuration instead 

编辑:当您使用maven和开放类声明(F3)时,maven可以自动下载源代码,您将看到带有解释的javadoc注释的内容。

旧API和新API之间没有太多不同的function ,除了旧API支持推送到map / reduce函数,而新API支持推送和拉取API 。 虽然,新的API更清洁,更容易发展。

以下是引入新API的JIRA 。 此外,旧API已在0.21中弃用 ,并将在0.22或0.23版本中弃用。

您可以在此处和此处找到有关新API或有时称为“上下文对象”的更多信息。