3

我是hadoop的新手。

我正在尝试使用此递归代码列出我的 hdfs 中存在的所有文件。

public void list(String path) throws IOException {
    Path dirPath = new Path(path);
    FileStatus[] fileStatus = fileSystem.listStatus(dirPath);
    if(fileStatus != null) {
        for (FileStatus fs : fileStatus) {
            String name = fs.getPath().getName();
            if(fs.isDir()) {
                System.out.println("dir --> " + name);
                list(dirPath.getName() + "/" + name);
            } else {
                System.out.println("file --> " + name);
            }
        }
    }
}

但是我没有得到文件列表。

提前致谢..

4

2 回答 2

2

如前所述,您必须正确初始化 Filesystem 对象。它应该是这样的:

Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(uri), conf);

如果您尝试从 HDFS 获取数据,则uri应该包含前缀。hdfs:///

于 2013-02-07T10:15:02.403 回答
1

尝试以下操作:

`

FileSystem fs = FileSystem.get(new Configuration());
RemoteIterator<LocatedFileStatus> rmIterator = fs.listLocatedStatus(new Path(srcPath));
while (rmIterator.hasNext()) {
Path path = rmIterator.next().getPath();
if(fs.isDirectory(path)){
System.out.println("Directory Name: "+path.getName());
}else if(fs.isFile(path)){
System.out.println("File Name: "+path.getName());
}

`

于 2013-02-12T14:52:11.113 回答