我在 Scala 中有一个 CoordinateMatrix 格式的矩阵。矩阵是稀疏的,整体看起来像(在 coo_matrix.entries.collect 上),
Array[org.apache.spark.mllib.linalg.distributed.MatrixEntry] = Array(
MatrixEntry(0,0,-1.0), MatrixEntry(0,1,-1.0), MatrixEntry(1,0,-1.0),
MatrixEntry(1,1,-1.0), MatrixEntry(1,2,-1.0), MatrixEntry(2,1,-1.0),
MatrixEntry(2,2,-1.0), MatrixEntry(0,3,-1.0), MatrixEntry(0,4,-1.0),
MatrixEntry(0,5,-1.0), MatrixEntry(3,0,-1.0), MatrixEntry(4,0,-1.0),
MatrixEntry(3,3,-1.0), MatrixEntry(3,4,-1.0), MatrixEntry(4,3,-1.0),
MatrixEntry(4,4,-1.0))
这只是一个很小的样本量。矩阵的大小为 N x N(其中 N = 100 万),尽管其中大部分是稀疏的。在 Spark Scala 中获取该矩阵的行和的有效方法之一是什么?目标是创建一个由行总和组成的新 RDD,即大小为 N,其中第一个元素是 row1 的行总和,依此类推..
我总是可以将此坐标矩阵转换为 IndexedRowMatrix 并运行一个 for 循环来一次计算一次迭代的行和,但这不是最有效的方法。
任何想法都非常感谢。