Scala RDD[Vector]到数据帧
我有一个Scala RDD[Vector]到数据帧,scala,apache-spark,Scala,Apache Spark,我有一个行矩阵的实例,它包含一个列。 我试图将此行矩阵转换为数据帧,但我不太确定如何将org.apache.spark.rdd.rdd[org.apache.spark.mllib.linalg.Vector]转换为数据帧 val mat: RowMatrix = new RowMatrix(centred) val mat_rows = mat.rows // RDD[Vector] 我知道如果我有两个(或更多)列,我可以使用下面的代码 val mat_rdd = mat_rows.map(
行矩阵的实例,它包含一个列。
我试图将此行矩阵转换为数据帧,但我不太确定如何将org.apache.spark.rdd.rdd[org.apache.spark.mllib.linalg.Vector]
转换为数据帧
val mat: RowMatrix = new RowMatrix(centred)
val mat_rows = mat.rows // RDD[Vector]
我知道如果我有两个(或更多)列,我可以使用下面的代码
val mat_rdd = mat_rows.map(_.toArray).map{case Array(p0, p1) => (p0, p1)}
val df = sparkSession.createDataFrame(mat_rdd).toDF("f1", "f2")
问题是我只有一个专栏。如果修改上述代码以创建单列数据帧,则会出现以下错误:
overloaded method value createDataFrame with alternatives:
它在Spark 2.0.0中运行良好:
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.linalg.distributed.RowMatrix
val rows = spark.sparkContext.parallelize(Array(Vectors.dense(1), Vectors.dense(1)))
val mat: RowMatrix = new RowMatrix(rows)
scala> mat.rows.map(_.toArray).map{ case Array(a) => a}.toDF("f1").show()
+---+
| f1|
+---+
|1.0|
|1.0|
+---+