簡體   English   中英

如何計算hadoop中特定目錄下的文件數?

[英]How to count number of files under specific directory in hadoop?

我是map-reduce框架的新手。 我想通過提供該目錄的名稱找出特定目錄下的文件數。 例如,假設我們有3個目錄A,B,C,每個目錄分別有20,30,40個part-r文件。 所以我有興趣編寫一個hadoop作業,它將計算每個目錄中的文件/記錄,即我想在以下格式化的.txt文件中輸出:

A有20條記錄

B有30條記錄

C有40條記錄

這些所有目錄都存在於HDFS中。

最簡單/原生的方法是使用內置的hdfs命令,在本例中為-count

hdfs dfs -count /path/to/your/dir  >> output.txt

或者,如果您更喜歡通過Linux命令進行混合方法:

hadoop fs -ls /path/to/your/dir/*  | wc -l >> output.txt

最后,MapReduce版本已在此處得到解答:

如何計算MR作業中HDFS中的文件數?

碼:

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM