我是Scala的初学者,我有以下问题: 如何阅读更多的一个csv文件,并将每个文件分配给下一个变量? 我知道如何读取一个文件:
val file_1.sc.textFile("/Users/data/urls_20170225")
我也知道如何阅读许多文件:
val file_2.sc.textFile("/Users/data/urls_*")
但是第二种方式将所有数据分配给一个变量file_2,这是我不想要的!我在Spark Scala中寻找优雅的方法。
答案 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