gpt4 book ai didi

scala - 如何列出 Hdfs 目录和子目录中文件的路径?

转载 作者:可可西里 更新时间:2023-11-01 15:21:37 27 4
gpt4 key购买 nike

无法找到一种方法来列出目录和子目录中的所有文件。

这是我正在使用的代码,它列出了特定目录中的文件,但如果里面有子目录,则为文件:

val conf = new Configuration()
val fs = FileSystem.get(new java.net.URI("hdfs://servername/"), conf)
val status = fs.listStatus(new Path("path/to/folder/"))
status.foreach { x => println(x.getPath.toString()) }

上面的代码列出了目录中的所有文件,但我需要它是递归的。

最佳答案

只要发现新文件夹,就可以进行递归:

val hdfs = FileSystem.get(new Configuration())

def listFileNames(hdfsPath: String): List[String] = {

hdfs
.listStatus(new Path(hdfsPath))
.flatMap { status =>
// If it's a file:
if (status.isFile)
List(hdfsPath + "/" + status.getPath.getName)
// If it's a dir and we're in a recursive option:
else
listFileNames(hdfsPath + "/" + status.getPath.getName)
}
.toList
.sorted
}

关于scala - 如何列出 Hdfs 目录和子目录中文件的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52446085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com