嗨,我说我有几张表,并存储在多个.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))