gpt4 book ai didi

scala - 使用通配符打开多个 csv 文件 Spark Scala

转载 作者:行者123 更新时间:2023-12-01 14:24:12 32 4
gpt4 key购买 nike

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

我想做这样的事情

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

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

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

无论如何都要执行上述操作,以便不包含额外的 header

最佳答案

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

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

关于scala - 使用通配符打开多个 csv 文件 Spark Scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37977637/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com