java - HDFS 目录中的文件数

标签 java hadoop hdfs

在 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/

相关文章:

java - JSF 无法将给定对象格式化为日期

java - 如何在 Windows 上的 eclipse 中运行 nutch 1.9?

hadoop - 我可以像在 MySQL 中那样从文件创建 Hive 表吗

hadoop - 当应用程序 jar 在 hdfs 中时,Spark-submit 不起作用

Hadoop2.7.0 NameNode格式java.lang.IllegalArgumentException : URI has an authority component

java - 键入时如何正确删除自动添加的右括号

java - 配置spring boot embedded tomcat - 更新setenv文件

java - 将后台运行的小程序 Logo (一杯咖啡)更改为任何可选图像?

java - org.apache.hive.jdbc.HiveStatement/org.apache.hadoop.hive.jdbc.HiveStatement 之间的区别

hadoop - Exasol 与 HBase