繁体   English   中英

Spark:要转换为数据帧的rdd格式

[英]Spark: format of an rdd to convert to dataframe

假设我有以下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)]

知道怎么做吗?

更新

要使用Tuples,您必须知道要放入其中的元素数量,并自己定义用例。 因此,要使用可变数量的元素,您可能需要使用一些集合。 对于您的用例,可以使用以下方法:

rdd.map { case((a,b,c,d)) => a +: (b +: c) :+ d}.map(_.mkString(","))

这将导致对应于csv文件每一行的RDD[String] 您正在将其他元素添加并附加到Array “ c”以产生单个Array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM