2011-10-02 5 views
9
public static class Map extends MapReduceBase implements Mapper 

MapReduceBase, Mapper y JobConf están en desuso en Hadoop 0.20.203.MapReduceBase y Mapper en desuso

¿Qué deberíamos usar ahora?

Edición 1 - para la Mapper y la MapReduceBase, me encontré con que sólo tenemos que extiende la 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); 
    } 
    } 
} 

Edición 2 - Para JobConf debemos utilizar la configuración de la siguiente manera:

public static void main(String[] args) throws Exception { 
     Configuration conf = new Configuration(); 
     Job job = new Job(conf); 
     job.setMapperClass(WordCount.Map.class); 
    } 

Editar 3 - Encontré un buen tutorial de acuerdo con la nueva API: http://sonerbalkir.blogspot.com/2010/01/new-hadoop-api-020x.html

+0

¿Qué dice la documentación que deberías usar? Por lo general, cuando algo está en desuso, el Javadoc le dirá qué debe usar en su lugar. – rossum

Respuesta

7

Javadoc contiene información wh at para usar instaed de estas clases depraceated:

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

Deprecated. Use Configuration instead 

Editar: Cuando se utiliza Maven y declaración de la clase abierta experto (F3) se pueden descargar automáticamente el código fuente y verá el contenido de los comentarios Javadoc con explicaciones.

+0

+ 1 para la configuración. Gracias – JohnJohnGa

4

No hay mucha diferencia entre la antigua y la nueva API, excepto que la antigua API admite las funciones de mapa/reducir, mientras que la nueva API admite both push and pull API. Aunque, la nueva API es mucho más limpia y fácil de desarrollar.

Aquí está el JIRA para la introducción de la nueva API. Además, la antigua API ha sido un-deprecated en 0.21 y estará obsoleta en release 0.22 or 0.23.

Puede encontrar más información sobre la nueva API o, a veces, los llamados 'objetos de contexto' here y here.

Cuestiones relacionadas