无法在hadoop中列出文件

时间:2013-02-07 09:45:07

标签: java hadoop hdfs

我是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);
            }
        }
    }
}

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

提前致谢..

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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());
}

`