Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何根据元素名称从列表中获取元素?_Scala_List_Apache Spark - Fatal编程技术网

Scala 如何根据元素名称从列表中获取元素?

Scala 如何根据元素名称从列表中获取元素?,scala,list,apache-spark,Scala,List,Apache Spark,我有一个包含子路径的路径,每个子路径包含文件 path="/data" 我实现了两个函数,从每个子路径获取csv文件 def getListOfSubDirectories(directoryName: String): Array[String] = { (new File(directoryName)) .listFiles .filter(_.isDirectory) .map(_.getName) } def getLis

我有一个包含子路径的路径,每个子路径包含文件

      path="/data"
我实现了两个函数,从每个子路径获取csv文件

      def getListOfSubDirectories(directoryName: String): Array[String] = {
  (new File(directoryName))
    .listFiles
    .filter(_.isDirectory)
    .map(_.getName)
}
      def getListOfFiles(dir: String, extensions: List[String]): List[File] = {
  val d = new File(dir)
  d.listFiles.filter(_.isFile).toList.filter { file =>
    extensions.exists(file.getName.endsWith(_))
  }
}
每个子路径包含5个csv文件:contextfile.csv、datafile.csv、datesfiles.csv、errors.csv、testfiles,因此我的问题是,我将在一个单独的数据框中处理每个文件。如何获取正确数据框的文件名,例如,我想获取与上下文相关的文件名(即contextfile.csv)。我是这样工作的,但是每次迭代的逻辑和排名都会发生变化

  val dir=getListOfSubDirectories(path)
  for (sup_path <- dir)
   { val Files = getListOfFiles(path + "//" + sup_path, List(".csv"))
  val filename_context = Files(1).toString
  val filename_datavalue = Files(0).toString
  val filename_error = Files(3).toString
  val filename_testresult = Files(4).toString
val dir=getListOfSubDirectories(路径)

对于(sup_path我只需要一个简单的过滤器就可以解决它

  val filename_context = Files.filter(f =>f.getName.contains("context")).last.toString
  val filename_datavalue = Files.filter(f =>f.getName.contains("data")).last.toString
  val filename_error = Files.filter(f =>f.getName.contains("error")).last.toString
  val filename_testresult = Files.filter(f =>f.getName.contains("test")).last.toString