最簡單的/天然的方法是使用內置的HDFS命令,在這種情況下-count
:
hdfs dfs -count /path/to/your/dir >> output.txt
或者,如果你喜歡一個混合的方法通過Linux命令:
hadoop fs -ls /path/to/your/dir/* | wc -l >> output.txt
最後的MapReduce版本已經在這裏回答:
How do I count the number of files in HDFS from an MR job?
代碼:
int count = 0;
FileSystem fs = FileSystem.get(getConf());
boolean recursive = false;
RemoteIterator<LocatedFileStatus> ri = fs.listFiles(new Path("hdfs://my/path"), recursive);
while (ri.hasNext()){
count++;
ri.next();
}
System.out.println("The count is: " + count);
爲什麼你要爲它創建一個作業,不能你只需爲它編寫Java程序? – ViKiG
簡易版:'hadoop fs -ls/dir | grep part-0 * | wc -l' –