Scala:我在RDD中有一个csv文件的联合如何将RDD数据写入新的csv文件

时间:2018-01-11 17:26:30

标签: scala apache-spark

我在目录路径中有多个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]

1 个答案:

答案 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)