tutorial llap how hortonworks hadoop hive hdfs

hadoop - llap - Comparación de archivos HDFS



hortonworks tutorial hdp (2)

¿Cómo puedo comparar dos archivos HDFS ya que no hay diff ?

Estaba pensando en usar tablas Hive y cargar datos de HDFS y luego usar declaraciones de unión en 2 tablas. ¿Hay algún mejor enfoque?


Bueno, la respuesta más simple es probablemente:

diff <(hadoop fs -cat file1) <(hadoop fs -cat file2)

Simplemente se ejecutará en su máquina local. Si eso es demasiado lento, entonces sí, tendría que hacer algo con Hive y MapReduce, pero eso es un poco más complicado, y no coincidirá exactamente con la comparación en orden que hace diff.


No se proporciona un comando diff con hadoop, pero puedes usar redirecciones en tu shell con el comando diff :

diff <(hadoop fs -cat /path/to/file) <(hadoop fs -cat /path/to/file2)

Si solo quiere saber si 2 archivos son idénticos o no, sin preocuparse por conocer las diferencias, sugeriría otro enfoque basado en la suma de comprobación: podría obtener las sumas de comprobación para ambos archivos y luego compararlos. Creo que Hadoop no necesita generar sumas de verificación porque ya están almacenadas, por lo que debe ser rápido, pero puedo estar equivocado. No creo que haya una opción de línea de comandos para eso, pero podrías hacer esto fácilmente con la API de Java y crear una aplicación pequeña:

FileSystem fs = FileSystem.get(conf); chksum1 = fs.getFileChecksum(new Path("/path/to/file")); chksum2 = fs.getFileChecksum(new Path("/path/to/file2")); return chksum1 == chksum2;