Я пытаюсь программно получить все файлы по заданному пути, используя код Java
public static List<String> listFilesFromHDFSPath(Configuration hadoopConfiguration, String hdfsPath)
throws IOException, IllegalArgumentException {
List<String> filePaths = new ArrayList<String>();
Path path = new Path(hdfsPath);
FileSystem fs = path.getFileSystem(hadoopConfiguration);
if(fs.isDirectory(path)){
FileStatus[] fileStatuses = fs.listStatus(path);
for(FileStatus fileStatus : fileStatuses){
if(fileStatus.isFile())
filePaths.add(fileStatus.getPath().toString());
}
}
else {
filePaths.add(path.toString());
}
fs.close();
return filePaths;
}
Но этот подход сейчас работает для меня, процесс умирает после строки:
FileSystem fs = path.getFileSystem(hadoopConfiguration);
Итак, я пытался получить эквивалентную команду "hdfs dfs -ls -R" в java, такую же, как в Scala:
import scala.sys.process._
val lsResult = Seq("hdfs","dfs","-ls","-R","hdfs://path/demo/").!!
Есть ли что-то подобное для java?