不推荐使用MapReduceBase和Mapper

时间:2011-10-02 11:31:35

标签: java hadoop mapreduce

public static class Map extends MapReduceBase implements Mapper
MapReduceBaseMapperJobConf已在 Hadoop 0.20.203 中弃用。

我们现在应该使用什么?

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

public static class Map extends Mapper
            <LongWritable, Text, Text, IntWritable> {
  private final static IntWritable one = new IntWritable(1);
  private Text word = new Text();

  public void map(LongWritable key, Text value, 
         OutputCollector<Text, IntWritable> 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

2 个答案:

答案 0 :(得分:7)

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

e.g。 http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/JobConf.html

 Deprecated. Use Configuration instead

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

答案 1 :(得分:4)

旧API和新API之间没有太多不同functionality明智,除了旧API支持推送到map / reduce函数,而新API支持both push and pull API。虽然,新的API更清洁,更容易发展。

以下是引入新API的JIRA。此外,旧API在0.21中为un-deprecated,将在release 0.22 or 0.23中弃用。

您可以找到有关新API的详细信息,有时也称为“上下文对象”herehere