如何在Scala Spark中将RDD [Double]转换为Vector

时间:2017-06-02 12:00:28

标签: scala apache-spark vector rdd

我有一个双打的IndexedRowMatrix。我想计算矩阵每行的总和,并将结果保存到Vector。之后我想播放这个载体。 我正在创建一个双打的RDD,其中包含总和,但我无法将其转换为矢量。 所以,问题基本上是如何从IndexedRowMatrix创建我想要的Vector。

1 个答案:

答案 0 :(得分:1)

收集驱动程序并构造一个向量:

import org.apache.spark.mllib.linalg.{Vector, Vectors}

val sc: SparkContext = ???
val rdd: RDD[Double] = ???
val vec: Vector = Vectors.dense(rdd.collect)
val broadcastVec = sc.broadcast(vec)

参考文献:

https://spark.apache.org/docs/2.1.0/mllib-data-types.html#local-vector https://spark.apache.org/docs/latest/programming-guide.html#broadcast-variables