嗨,我说我有一些表,其中包含存储在多个.csv文件中的相同标题
我想做这样的事情
scala> val files = sqlContext.read
.format("com.databricks.spark.csv")
.option("header","true")
.load("file:///PATH_TO_FILE/*.csv")
但是当我这样做时,我会从其他文件的标题中获得额外的列
在一个简单的例子中,我有2个.csv文件,当我单独加载它们然后使用unionAll组合它时,我得到正确的行数。但是当我尝试执行上述操作时,我会得到一个额外的行(来自第二个文件的标题行)。单独加载它们然后联合它们将无法工作,因为我可能需要打开很多文件。
无论如何都要执行上述操作,以便不包含额外的标题
答案 0 :(得分:0)
你可能最终必须加入所有这些。要立即完成,您可以尝试下面的内容。
//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))