使用通配符打开多个CSV文件Spark Scala



嗨,我说我有几张表,并存储在多个.csv文件中的同一标头

我想做这样的事情

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

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

在简单的情况下,我有2个.CSV文件,当我单独加载它们,然后使用Unionall组合它们时,我会得到正确数量的行。但是,当我尝试执行上述加载时,我会得到一条额外的线(来自第二个文件的标题线)。分别加载它们,然后联合它们将无法正常工作,因为我可能需要打开很多文件。

无论如何都可以做上述操作,以便不包括额外的标头

您可能必须加入所有这些。要立即完成它,您可以尝试以下类似。

//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))

相关内容

  • 没有找到相关文章

最新更新