最近需要遍历HDFS的所有目录,最开始使用的是
org.apache.hadoop.fs.FileStatus,但是本机测试速度很慢,代码如下:
Collection<FileStatus> fileStatuses1 = fsShell.lsr(path);
后来采用
Configuration conf = new Configuration(); conf.set("fs.default.name", "hdfs://192.168.0.25:8030/"); FileSystem fileSystem = FileSystem.get(conf); RemoteIterator<LocatedFileStatus> iterator = fileSystem.listFiles(new Path("/user"), true);
while (iterator.hasNext()) { LocatedFileStatus status = iterator.next(); Path filePath = status.getPath(); String fileName = filePath.getName(); System.out.println(filePath+fileName); }
速度可以提升百倍