如何计算hadoop中特定目录下的文件数?

时间:2016-08-05 05:44:00

标签: hadoop mapreduce

我是map-reduce框架的新手。我想通过提供该目录的名称找出特定目录下的文件数。 例如假设我们有3个目录A,B,C,每个目录分别有20,30,40个part-r文件。因此,我有兴趣编写一个hadoop作业,它将计算每个目录中的文件/记录,即我想在下面格式化的.txt文件中输出:

A有20条记录

B有30条记录

C有40条记录

这些所有目录都存在于HDFS中。

1 个答案:

答案 0 :(得分:1)

最简单/原生的方法是使用内置的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);