我是Hadoop和Java的新手。我正在尝试从我正在编写的MapReduce驱动程序中计算HDFS上文件夹中的文件数。我想在不调用HDFS Shell的情况下这样做,因为我希望能够传入我在运行MapReduce作业时使用的目录。我已经尝试了很多方法但由于我缺乏Java经验而没有成功实现。
非常感谢任何帮助。
谢谢,
游牧。
答案 0 :(得分:2)
您可以使用FileSystem并迭代路径中的文件。这是一些示例代码
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();
}