Hadoop descomprime archivos en un directorio y los mueve individualmente a otra carpeta.
Estoy intentando descomprimir cientos de archivos en HDFS y moverlos individualmente a otra carpeta para que puedan cargarse en una tabla externa en Hive. Intenté el siguiente comando, pero solo dio como resultado 1 archivo unido sin nombre en el directorio de destino.
!hdfs dfs -cat /user/[somedir1]/* | hadoop fs -put - /user/[somedir2]/uncompressed/
Necesito (por ejemplo) que 100 archivos comprimidos sean descomprimidos y que cada uno de estos archivos descomprimidos se mueva a la carpeta de destino individualmente con fines de depuración. No puedo usar otro lenguaje de programación ya que hará que el proyecto sea más complicado de lo necesario. Creo que esto se puede hacer usando la línea de comandos de hdfs, simplemente no conozco la sintaxis correcta en una línea.
davy.ai
Para lograr esto, puede utilizar una combinación de comandos
hdfs dfs
y un buclefor
en la shell de Bash. Aquí está el comando de una sola línea que debería funcionar para usted:El comando anterior hará lo siguiente:
.gz
en el directorio/user/[somedir1]
usando el comandohdfs dfs -ls
.awk
.for
.hdfs dfs -text
.hadoop fs -put
y lo guardará con el mismo nombre de archivo (menos la extensión) en el directorio/user/[somedir2]/uncompressed
.Nota: Reemplace
[somedir1]
y[somedir2]
con los nombres de directorio reales en su sistema de archivos distribuido HDFS.