Soy nuevo en Hadoop. Quiero acceder a un argumento de línea de comandos de la función principal(programa de Java) dentro de la función de mapa de la clase mapper. Por favor, sugiera maneras de hacer esto.

InformationsquelleAutor Pooja N Babu | 2011-12-10

3 Comentarios

  1. 19

    Hadoop 0.20, presentó el nuevo SEÑOR de la API, no hay mucho en la funcionalidad de la diferencia entre el nuevo (o.una.h.mapreduce paquete) y el viejo SEÑOR (API o.una.h.mapred), excepto que los datos puedan ser retirado dentro de los mappers y reducers el uso de la nueva API. Lo Arnón se menciona es con la antigua API.

    Comprobar este artículo para pasar los parámetros a través de la nueva y la vieja API.

    • Muchas gracias por el enlace. Ayudó a resolver el problema.
    • Por CIERTO, soy el autor del blog 🙂
    • Hadoop 0.20 no existía [ 404 ], ,por Favor, cambie
  2. 14

    Puede pasar parámetros por colgándolas en la Configuración de

     JobConf job = new JobConf(new Configuration(), TheJob.class);
     job.setLong("Param Name",longValue)

    La Configuración de la clase tiene unos métodos set (Long, Int, Cadenas, etc.) así que usted puede pasar parámetros de varios tipos. En el mapa de trabajo puede obtener la configuración del Contexto (getConfiguration)

    • Es posible pasar parámetros de tipo ArrayList?
    • No de esa manera, pero se puede pasar un array de cadenas mediante el setStrings Método descrito aquí hadoop.apache.org/docs/r0.20.2/api/org/apache/hadoop/conf/…, java.lang.Cadena…)
    • Siempre me gusta respuestas que se destacan por su propia cuenta (sin dependencia externa sitios para obtener información desde los enlaces se rompen a menudo o cambios de contenido).
  3. 4

    En los últimos Hadoop (por ejemplo, >=0.2 hasta 2,4+), se establece este tipo de opciones en la configuración del trabajo:

    conf = new JobConf(MyJarClass);
    conf.set("myStringOption", "myStringValue");
    conf.set("myIntOption", 42);

    Y recuperar esas opciones en el configure() método ofmapper/reductor de clases:

    public static class MyMapper extends MapReduceBase implements Mapper<...> {
    
        Integer myIntegerOption;
        String myStringOption;
    
        @Override
        public void configure(JobConf job) {
            super.configure(job);
            myIntegerOption = job.getInt("myIntOption", -1); 
            //nb: last arg is the default value if option is not set
            myStringOption = job.get("myStringOption", "notSet");
        }
    
        @Override
        public void map(... key, ... value, 
                        OutputCollector<..> output, Reporter reporter) throws IOException {
            //here you can use the options in your processing
            processRecord(key, value, myIntOption, myStringOption);
        }
    
    }

    Nota que configure() se llama una vez antes de que todos los registros se pasa a la mapa o reducir.

Dejar respuesta

Please enter your comment!
Please enter your name here