formato hadoop mapreduce gzip lzo

hadoop - formato orc



Hadoop: ¿Cómo dar salida a diferentes tipos de formato en el mismo trabajo? (1)

Así que tal vez como solución alternativa, intente configurar el outputCompressorClass correcto directamente en la configuración

context.getConfiguration().setOutputCompressorClass(GzipCodec.class);

justo antes de su llamada de escritura a cada uno de los resultados. Parece que cualquier parámetro de configuración de formato de salida distinto de la clase de clave, la clase de valor y la ruta de salida no son manejados bien por MultipleOutputs y es posible que tengamos que escribir un poco de código para compensar esa supervisión.

Quiero lzo formatos gzip y lzo al mismo tiempo en un trabajo.

Usé MultipleOutputs , y agregué dos salidas nombradas como esta:

MultipleOutputs.addNamedOutput(job, "LzoOutput", GBKTextOutputFormat.class, Text.class, Text.class);

GBKTextOutputFormat.setOutputCompressorClass(job, LzoCodec.class);

MultipleOutputs.addNamedOutput(job, "GzOutput", TextOutputFormat.class, Text.class, Text.class);

TextOutputFormat.setOutputCompressorClass(job, GzipCodec.class);

( GBKTextOutputFormat aquí está escrito por mí mismo que se extiende FileOutputFormat )

Se usan en un reductor como:

multipleOutputs.write("LzoOutput", NullWritable.get(), value, "/user/hadoop/lzo/"+key.toString());

multipleOutputs.write("GzOutput", NullWritable.get(), value, "/user/hadoop/gzip/"+key.toString());

El resultado es:

Puedo obtener resultados en los dos caminos, pero ambos están en formato gzip .

¿Puede ayudarme alguien? ¡Gracias!

=============================================== ========================

Más:

Acabo de ver el código fuente de setOutputCompressorClass en FileOutputFormat , en el que conf.setClass("mapred.output.compression.codec", codecClass, CompressionCodec.class);

Parece que mapred.output.compression.codec en la configuración se restablecerá cuando se llame a setOutputCompressorClass.

Entonces, ¿el formato de compresión real es el que configuramos al fin, y no podemos establecer dos formatos de compresión diferentes en el mismo trabajo? O hay algo más ignorado?