Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala RDD[Vector]到数据帧_Scala_Apache Spark - Fatal编程技术网

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