2012-06-08 5 views
12

Come è possibile, tramite Java, elencare tutti i file (in modo ricorsivo) in un determinato percorso in HDFS. Ho passato l'API e ho notato FileSystem.listFiles (Path, boolean) ma sembra che quel metodo non esista nella mia istanza di FileSystem quando lo inizializzo.HDFS: come si elencano i file in modo ricorsivo?

risposta

11

È possibile guardare il sorgente per org.apache.hadoop.fs.FsShell.ls(FileStatus, FileSystem, boolean, boolean) per la versione di Hadoop - questo è quello che viene chiamato quando si esegue una hadoop fs -lsr path dalla riga di comando

+2

"-lsr" è privato, utilizzare: hadoop fs -ls -R PATH – 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

Usa -R seguito dal comando ls per elencare i file/directorires in modo ricorsivo.

hadoop fs -ls -R Path/Of/File 

possibili attributi per comando ls sono

-d: directory sono elencati come file normali.

-h "formatta i formati di file in modo leggibile, piuttosto che un numero di byte.

-R" lista ricorsivamente il contenuto delle directory.