RDD [Vector]到数据帧

时间:2017-05-05 09:54:00

标签: scala apache-spark

我有一个包含单个列的<div *ngIf="currentStatus !== 'open' || currentStatus !== 'reopen'"> 实例。 我试图将此RowMatrix转换为数据帧但我不太确定如何将RowMatrix转换为数据帧。

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")

1 个答案:

答案 0 :(得分:1)

它在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|
+---+