2012-06-08 49 views
12

您如何通過Java在HDFS中的某個路徑下列出所有文件(遞歸地)。我瀏覽了API並注意到了FileSystem.listFiles(Path,boolean),但是當我初始化它時,它看起來像我的FileSystem實例中不存在該方法。HDFS:你如何遞歸列出文件?

回答

11

你可以看一下源爲org.apache.hadoop.fs.FsShell.ls(FileStatus, FileSystem, boolean, boolean)您的Hadoop版本 - 這就是所謂的,當你在命令行

  • 0.20.2執行hadoop fs -lsr path - 線593
  • 1.0.2 - 線590
+2

「-lsr」被刪除,使用: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

使用-R後跟ls命令以遞歸方式列出文件/導向器。

hadoop fs -ls -R Path/Of/File 

爲ls命令可能的屬性是

-d:目錄被列爲純文本文件。

-h「格式的文件的大小中的人類可讀的方式,而不是一個字節數。

-R」遞歸列出目錄的內容。