如何从
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
?
我提前感谢任何评论或帮助。
答案 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]
。