Apache spark Spark:遍历HDFS子文件夹并查找名为“的所有文件”;X";
我有一个HDFS路径,我想遍历所有子文件夹,找到其中所有名为“X”的文件 我尝试过这样做:Apache spark Spark:遍历HDFS子文件夹并查找名为“的所有文件”;X";,apache-spark,hdfs,Apache Spark,Hdfs,我有一个HDFS路径,我想遍历所有子文件夹,找到其中所有名为“X”的文件 我尝试过这样做: FileSystem.get( sc.hadoopConfiguration ) .listStatus( new Path("hdfs://...")) .foreach( x => println(x.getPath)) 但这只搜索1个级别内的文件,我需要所有级别。您需要递归获取所有文件。循环遍历路径并获取所有文件,如果是目录,请再次调用相同的函数。 下面是一个简单的代码,您可以根据自
FileSystem.get( sc.hadoopConfiguration )
.listStatus( new Path("hdfs://..."))
.foreach( x => println(x.getPath))
但这只搜索1个级别内的文件,我需要所有级别。您需要递归获取所有文件。循环遍历路径并获取所有文件,如果是目录,请再次调用相同的函数。 下面是一个简单的代码,您可以根据自己的配置和测试进行修改
var fileSystem : FileSystem = _
var configuration: Configuration = _
def init() {
configuration = new Configuration
fileSystem = FileSystem.get(configuration)
val fileStatus: Array[FileStatus] = fileSystem.listStatus(new Path(""))
getAllFiles(fileStatus)
}
def getAllFiles(fileStatus: Array[FileStatus]) {
fileStatus.map(fs => {
if (fs.isDirectory)
getAllFiles(fileSystem.listStatus(fs.getPath))
else fs
})
}
获取文件列表后,还要筛选包含“X”的文件。可能存在重复的文件