Solución:
Finalmente descubrí que puedo usar el siguiente comando para leer el contenido de un archivo comprimido Snappy en HDFS:
hadoop fs -text /path/filename
Usando los últimos comandos en Cloudera o HDP:
hdfs dfs -text /path/filename
Si la intención es descargar el archivo en formato de texto para un examen y procesamiento adicionales, la salida de ese comando se puede canalizar a un archivo en el sistema local. También puede usar head para ver las primeras líneas del archivo.
Por favor, eche un vistazo a esta publicación en el blog de Cloudera. Explica cómo usar Snappy con Hadoop. Esencialmente, los archivos Snappy en texto sin formato no se pueden dividir, por lo que no puede leer un solo archivo en varios hosts.
La solución es usar Snappy en un formato de contenedor, por lo que esencialmente estás usando Hadoop SequenceFile
con compresión configurada como Snappy. Como se describe en esta respuesta, puede establecer la propiedad mapred.output.compression.codec para org.apache.hadoop.io.compress.SnappyCodec y configure el formato de salida de su trabajo como SequenceFileOutputFormat
.
Y luego, para leerlo, solo debes usar SequenceFile.Reader
porque la información del códec se almacena en el encabezado del archivo.