不推荐使用 MapReduceBase 和 Mapper

2022-01-13 00:00:00 hadoop mapreduce java
public static class Map extends MapReduceBase implements Mapper

MapReduceBaseMapperJobConf 在 Hadoop 0.20.203 中已弃用.

MapReduceBase, Mapper and JobConf are deprecated in Hadoop 0.20.203.

我们现在应该使用什么?

What should we use now?

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

Edit 1 - for the Mapper and the MapReduceBase, I found that we just need to extends the 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);
    }
  }
}

Edit 2 - 对于 JobConf 我们应该使用如下配置:

Edit 2 - For JobConf we should use configuration like this:

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

Edit 3 - I found a good tutorial according to the new API : http://sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html

推荐答案

Javadoc 包含信息在这个过时的类中使用什么:

Javadoc contains info what to use instaed of this depraceated classes:

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

 Deprecated. Use Configuration instead

当你使用 maven 和开放类声明 (F3) 时,maven 可以自动下载源代码,你会看到带有解释的 javadoc 注释内容.

When you use maven and open class declaration (F3) maven can automatically download source code and you'll see content of javadoc comments with explanations.

相关文章