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);
    }

Изменить 3. Я нашел хороший учебник по новому API: http://sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html


person JohnJohnGa    schedule 02.10.2011    source источник
comment
Что документация говорит, что вы должны использовать? Обычно, когда что-то объявляется устаревшим, в Javadoc указывается, что следует использовать вместо этого.   -  person rossum    schedule 02.10.2011


Ответы (2)


Javadoc содержит информацию о том, что использовать вместо этих устаревших классов:

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

 Deprecated. Use Configuration instead

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

person mmatloka    schedule 02.10.2011
comment
+ 1 для конфигурации. Спасибо - person JohnJohnGa; 02.10.2011

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

Вот JIRA для введения нового API. Кроме того, старый API был не рекомендуется в версии 0.21 и будет объявлен устаревшим. в выпуске 0.22 или 0.23.

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

person Praveen Sripati    schedule 02.10.2011