【问题标题】:Using wildcard to open multiple csv files Spark Scala使用通配符打开多个 csv 文件 Spark Scala
【发布时间】:2016-06-23 14:42:27
【问题描述】:

您好,我说我有几个表具有相同的标题存储在多个 .csv 文件中

我想做这样的事情

scala> val files =  sqlContext.read
.format("com.databricks.spark.csv")
.option("header","true")
.load("file:///PATH_TO_FILE/*.csv")

但是当我这样做时,我会从其他文件的标题中获得额外的列

在一个简单的情况下,我有 2 个 .csv 文件,当我分别加载它们然后使用 unionAll 组合它们时,我得到了正确的行数。但是当我尝试执行上述操作来加载它们时,我得到了一个额外的行(来自第二个文件的标题行)。单独加载它们然后 unionAll 它们将不起作用,因为我可能需要打开很多文件。

有没有办法做上面的,所以额外的标题不包括在内

【问题讨论】:

    标签: scala apache-spark spark-dataframe


    【解决方案1】:

    您最终可能必须加入所有这些。要立即完成,您可以尝试以下操作。

    //Get all the individual file paths
    def getListOfFiles(dir: File):List[File] = dir.listFiles.filter(_.isFile).toList
    val filelist = getListOfFiles(new File("file:///PATH_TO_FILE/"))
    
    //Read from the list of files you created
    val Files= filelist.map(file => { sqlContext.read.format("com.databricks.spark.csv").option("header","true").load(file.getPath.toString) })
    
    //Merge all the data into a single rdd
    val mergedFile= Files.reduce((x, y) => x.unionAll(y))
    

    【讨论】:

      猜你喜欢
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      • 2011-06-28
      • 2015-12-04
      • 2017-01-20
      • 2018-04-15
      相关资源
      最近更新 更多