Spark星系中的分布式BlockMatrix

时间:2015-07-27 07:48:01

标签: scala apache-spark apache-spark-mllib

  

如何从BlockMatrix(相同大小)制作分布式Matrices

例如,让A,B为两个2乘2 mllib.linalg.Matrices如下

import org.apache.spark.mllib.linalg.{Matrix, Matrices}
import org.apache.spark.mllib.linalg.distributed.BlockMatrix

val A: Matrix = Matrices.dense(2, 2, Array(1.0, 2.0, 3.0, 4.0))
val B: Matrix = Matrices.dense(2, 2, Array(5.0, 6.0, 7.0, 8.0))
val C = new BlockMatrix(???)

我如何首先从A,B中制作RDD[((Int, Int), Matrix)],然后从A,B中分配BlockMatrix

我提前感谢任何评论或帮助。

1 个答案:

答案 0 :(得分:4)

您可以先创建BlockMatrix

来构建RDD[((Int, Int), Matrix)]
val blocks: RDD[((Int, Int), Matrix)] = sc.parallelize(Seq(((0, 0), A), ((0, 1), B))

然后将其转换为BlockMatrix

val blockMatrix: BlockMatrix = new BlockMatrix(blocks, 2, 2)

这会为您提供BlockMatrix,其格式为[A | B]