我在目录路径中有多个csv文件,我必须从目录中获取所有csv文件,我必须联合所有csv文件,并且需要存储在RDD中。一旦RDD中的联合数据与我在csv文件中写回的RDD数据相同。我正在编写以下代码但是我无法满足要求。
请帮助我,
val rdd = getListOfFilenames()
.map(spark.sparkContext.textFile(_))
.foldLeft(spark.sparkContext.emptyRDD[String])(_ union _)
(或)
val rdd = List("file1", "file2", "file3", "file4", "file5")
.map(spark.sparkContext.textFile(_))
.reduce(_ union _)
rdd.write.option("header", "true").mode("overwrite").csv(test1.csv")
我收到以下错误,
write is not a member of org.apache.spark.rdd.RDD[String]
答案 0 :(得分:1)
首先,将文件加载为CSV。您将获得一个数据框列表。
val dataframes = List("file1", "file2", "file3", "file4", "file5")
.map(spark.read.option("header", true).csv(_))
假设他们有相同的架构:
val combined = dataframes.reduce(_ union _)
最后,编写组合数据框:
combined.write.option("header", true)
.coalesce(1).csv("output.csv)