MapReduceBase и Mapper устарели - PullRequest
       7

MapReduceBase и Mapper устарели

10 голосов
/ 02 октября 2011
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

Ответы [ 2 ]

7 голосов
/ 02 октября 2011

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

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

 Deprecated. Use Configuration instead

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

4 голосов
/ 02 октября 2011

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

Вот JIRA для введения нового API.Кроме того, старый API был не устарел в 0,21 и будет устаревшим в выпуск 0,22 или 0,23 .

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

...