Scala Spark.csv可变列数

Scala Spark.csv可变列数,scala,csv,apache-spark,Scala,Csv,Apache Spark,我有这样一个案例课: case class ResultDays (name: String, number: Double, values: Double*) 我想把它保存到一个.csv文件中 resultRDD.toDF() .coalesce(1) .write.format("com.databricks.spark.csv") .option("header", "true") .save("res/output/result.csv") 不幸的是,我有这个错误:

我有这样一个案例课:

case class ResultDays (name: String, number: Double, values: Double*)
我想把它保存到一个
.csv
文件中

resultRDD.toDF()
  .coalesce(1)
  .write.format("com.databricks.spark.csv")
  .option("header", "true")
  .save("res/output/result.csv")
不幸的是,我有这个错误:

java.lang.UnsupportedOperationException: CSV data source does not support array<double> data type.
java.lang.UnsupportedOperationException:CSV数据源不支持数组数据类型。

那么,我如何插入一个数量可变的
并将其保存到
.csv
中呢?

如果可以假设
resultRDD
中的所有记录在
中的列数相同,那么可以先读取
记录,然后使用它来确定数组中的值数,并将这些数组转换为单独的列:

// determine number of "extra" columns:
val extraCols = resultRDD.first().values.size

// create a sequence of desired columns:
val columns = Seq($"name", $"number") ++ (1 to extraCols).map(i => $"values"(i - 1) as s"col$i")

// select the above columns before saving:
resultRDD.toDF()
  .select(columns: _*)
  .coalesce(1)
  .write.format("com.databricks.spark.csv")
  .option("header", "true")
  .save("res/output/result.csv")
示例CSV结果如下所示:

name,number,col1,col2
a,0.1,0.01,0.001
b,0.2,0.02,0.002
c,0.3,0.03,0.003

CSV作为一种格式,不支持可变数量的值,因为所有记录必须具有相同的列。您知道预期值的数量吗?可能是
values
成员可能具有的最大值数?我必须为每行写入相同数量的
值,但我不知道在运行之前有多少
值。好的-但是一旦有了
resultRDD
,您可以假设所有记录都具有相同数量的值?是的,但是使用
ResultDays
类,它包含
Double*
,似乎我不能使用它