在 Java 代码中,我想连接到 HDFS 中的一个目录,了解该目录中的文件数量,获取它们的名称并想要读取它们。我已经可以读取文件,但我不知道如何计算目录中的文件并像普通目录一样获取文件名。
为了阅读,我使用 DFSClient 并将文件打开到 InputStream。
最佳答案
计数
Usage: hadoop fs -count [-q] <paths>
计算与指定文件模式匹配的路径下的目录、文件和字节数。输出列是: DIR_COUNT、FILE_COUNT、CONTENT_SIZE FILE_NAME。
带有 -q 的输出列是: QUOTA、REMAINING_QUATA、SPACE_QUOTA、REMAINING_SPACE_QUOTA、DIR_COUNT、FILE_COUNT、CONTENT_SIZE、FILE_NAME。
示例:
hadoop fs -count hdfs://nn1.example.com/file1 hdfs://nn2.example.com/file2
hadoop fs -count -q hdfs://nn1.example.com/file1
退出代码:
成功返回 0,错误返回 -1。
您可以只使用 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();
}
关于java - HDFS 目录中的文件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20381422/