Mapreducebase и Mapper устарели

public static class Map extends MapReduceBase implements Mapper

MapReduceBase, Mapper и JobConf устарели в Hadoop 0.20.203.

что мы должны использовать сейчас?

редактировать 1-для Mapper и MapReduceBase, я обнаружил, что нам просто нужно расширить 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);
    }

Edit 3 - я нашел хороший учебник в соответствии с новым API : http://sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html

2 ответов


документация содержится информация, что использовать instaed этой depraceated классы:

например http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/JobConf.html

 Deprecated. Use Configuration instead

Edit: при использовании Maven и Open Class declaration (F3) maven может автоматически загружать исходный код, и вы увидите содержимое комментариев javadoc с объяснениями.


существует не так много различных функциональность мудрый между старым и новым API, за исключением того, что старый API поддерживает функцию push to the map / reduce, в то время как новый API поддерживает и push и pull API. Хотя, новый API намного чище и легко развиваться.

здесь Джира для введения нового API. Кроме того, старый API был un-deprecated в 0.21 и будет удален в версия 0.22 или 0,23.

вы можете найти дополнительную информацию о новом API или иногда называемом "контекстными объектами"здесь и здесь.