如何读取多个文件并将每个文件分配给下一个变量?

时间:2017-03-13 17:22:38

标签: scala apache-spark dataframe

我是Scala的初学者,我有以下问题: 如何阅读更多的一个csv文件,并将每个文件分配给下一个变量? 我知道如何读取一个文件:

val file_1.sc.textFile("/Users/data/urls_20170225")

我也知道如何阅读许多文件:

val file_2.sc.textFile("/Users/data/urls_*")

但是第二种方式将所有数据分配给一个变量file_2,这是我不想要的!我在Spark Scala中寻找优雅的方法。

1 个答案:

答案 0 :(得分:0)

spark没有API将多个文件加载到多个RDD中。你可以做的是将它们逐个加载到一个RDD列表中。以下是示例代码。

def main(arg: Array[String]): Unit = {
  val dir = """F:\Works\SO\Scala\src\main\resource"""
  val startsWith = """urls_""" // we will use this as the wildcard

  val fileList:List[File] = getListOfFiles(new File(dir))
  val filesRDD:  List[RDD[String]] = fileList.collect({
    case file: File if file.getName.startsWith(startsWith)=> spark.sparkContext.textFile(file.getPath)
  })
}

//Get all the individual file paths
def getListOfFiles(dir: File):List[File] = dir.listFiles.filter(_.isFile).toList