gpt4 book ai didi

scala - 将本地向量转换为 RDD[向量]

转载 作者:行者123 更新时间:2023-12-04 17:46:33 28 4
gpt4 key购买 nike

我是 Spark 和 Scala 的新手,我正在尝试阅读有关 MLlib 的文档。

http://spark.apache.org/docs/1.4.0/mllib-data-types.html上的教程,

import org.apache.spark.mllib.linalg.Vector
import org.apache.spark.mllib.linalg.distributed.RowMatrix

val rows: RDD[Vector] = ... // an RDD of local vectors
// Create a RowMatrix from an RDD[Vector].
val mat: RowMatrix = new RowMatrix(rows)

// Get its size.
val m = mat.numRows()
val n = mat.numCols()

没有展示如何从局部向量列表构造 RDD[Vector](变量行)。

例如,我在 spark-shell 中执行(作为我探索的一部分)
val v0: Vector = Vectors.dense(1.0, 0.0, 3.0)
val v1: Vector = Vectors.sparse(3, Array(1), Array(2.5))
val v2: Vector = Vectors.sparse(3, Seq((0, 1.5),(1, 1.8)))

如果“合并”,它将看起来像这个矩阵
1.0  0.0  3.0
0.0 2.5 0.0
1.5 1.8 0.0

那么,我如何转换向量 v0 , v1 , v2rows ?

最佳答案

通过使用 Spark Context 并行化序列的属性,我们可以实现你想要的东西,既然你已经创建了向量,现在你需要将它们按顺序引入并通过下面给出的过程并行化。

import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.mllib.linalg.distributed.RowMatrix

val v0 = Vectors.dense(1.0, 0.0, 3.0)
val v1 = Vectors.sparse(3, Array(1), Array(2.5))
val v2 = Vectors.sparse(3, Seq((0, 1.5), (1, 1.8)))

val rows = sc.parallelize(Seq(v0, v1, v2))

val mat: RowMatrix = new RowMatrix(rows)

// Get its size.
val m = mat.numRows()
val n = mat.numCols()

关于scala - 将本地向量转换为 RDD[向量],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943953/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com