Apache spark Spark:遍历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个级别内的文件,我需要所有级别。您需要递归获取所有文件。循环遍历路径并获取所有文件,如果是目录,请再次调用相同的函数。 下面是一个简单的代码,您可以根据自

我有一个HDFS路径,我想遍历所有子文件夹,找到其中所有名为“X”的文件

我尝试过这样做:

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”的文件。

可能存在重复的文件