2012-06-08 16 views
12

¿Cómo, a través de Java, enumera todos los archivos (recursivamente) bajo una ruta determinada en HDFS. Revisé la API y noté FileSystem.listFiles (Path, boolean) pero parece que ese método no existe en mi instancia de FileSystem cuando lo inicializo.HDFS: ¿Cómo se enumeran los archivos recursivamente?

Respuesta

11

Usted puede mirar en el origen de org.apache.hadoop.fs.FsShell.ls(FileStatus, FileSystem, boolean, boolean) para su versión de Hadoop - esto es lo que se llama cuando se realiza una hadoop fs -lsr path desde la línea de comandos

+2

"-lsr" está privado, uso: hadoop fs -ls -R RUTA – 15412s

0
[email protected] ~/hadoop 
$ bin/hadoop fs -lsr /user/someone_else/myfiles 

-rw-r--r-- 1 hadoop-user supergroup   0 2013-11-26 02:09 /user/someone_else/myfiles/file1.txt 

-rw-r--r-- 1 hadoop-user supergroup   0 2013-11-26 02:09 /user/someone_else/myfiles/file2.txt 

drwxr-xr-x - hadoop-user supergroup   0 2013-11-26 02:09 /user/someone_else/myfiles/subdir 

-rw-r--r-- 1 hadoop-user supergroup   0 2013-11-26 02:09 /user/someone_else/myfiles/subdir/anotherFile.txt 
5

uso -R seguido de comando ls para listar los archivos/directorires de forma recursiva.

hadoop fs -ls -R Path/Of/File 

atributos posibles para comando ls son

-d: Los directorios se muestran como archivos planos.

-h "Formatos de los tamaños de los archivos de una forma legible por humanos en lugar de un número de bytes.

-R" recursivamente mostrar el contenido de directorios.

Cuestiones relacionadas