在Java代码中,我想连接到HDFS中的目录,了解该目录中的文件数量,获取它们的名称并想要读取它们.我已经可以读取文件,但我无法弄清楚如何计算目录中的文件并获取文件名,如普通目录.
为了阅读我使用DFSClient并将文件打开到InputStream中.
use*_*495 34
计数
Usage: hadoop fs -count [-q] <paths>
Run Code Online (Sandbox Code Playgroud)
计算与指定文件模式匹配的路径下的目录,文件和字节数.输出列为: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
Run Code Online (Sandbox Code Playgroud)
退出代码:
成功时返回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();
}
Run Code Online (Sandbox Code Playgroud)
use*_*953 12
FileSystem fs = FileSystem.get(conf);
Path pt = new Path("/path");
ContentSummary cs = fs.getContentSummary(pt);
long fileCount = cs.getFileCount();
Run Code Online (Sandbox Code Playgroud)
Eri*_*ric 12
你也可以尝试:
hdfs dfs -ls -R /path/to/your/directory/ | grep -E '^-' | wc -l
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42402 次 |
| 最近记录: |