假设我有以下RDD:星火:一个RDD的格式转换成数据帧
val rdd = sc.parallelize(Seq(('a'.toString,1.1,Array(1.1,2.2),0),
('b'.toString,1.5,Array(1.4,4.2),3),
('d'.toString,2.1,Array(3.3,7.4),4)))
>>>rdd: org.apache.spark.rdd.RDD[(String,Double,Array[Double],Int)]
而且我想用.write.format("com.databricks.spark.csv")
这需要一个数据框写入输出csv
格式。
因此,首先我需要将当前模式转换为 - >rdd[(String, String, String, String, String)]
,并将其转换为df后。我试过如下:
rdd.map { case((a,b,c,d)) => (a,b,c.mkString(","),d)}
但这输出:
rdd[(string,double,string,int)]
任何想法,该怎么办呢?
有一个用于此目的[spark-csv]的库(https://github.com/databricks/spark-csv/),它适用于2.0之前的版本。 –