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 に答える