我是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);
}
}
}
}
但是我没有得到文件列表。
提前致谢..
答案 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());
}
`