MapReduceBase和Mapper已弃用


public static class Map extends MapReduceBase implements Mapper
Hadoop 0.20.203不支持

MapReduceBase, MapperJobConf

我们现在应该用什么?

编辑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

Javadoc包含了替换这些废弃类的信息:

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

 Deprecated. Use Configuration instead

编辑:当你使用maven和打开类声明(F3) maven可以自动下载源代码,你会看到javadoc注释的内容和解释。

新旧API在功能上并没有太大的不同,除了旧API支持push到map/reduce函数,而新API同时支持push和pull API。尽管如此,新的API更简洁,更易于发展。

这里是介绍新API的JIRA。此外,旧的API在0.21中已不弃用,并将在0.22或0.23版本中弃用。

您可以在这里和这里找到有关新API或有时称为"上下文对象"的更多信息。

相关内容

  • 没有找到相关文章