我想存储使用星火大稀疏矩阵,所以我试图用CoordinateMatrix
,因为它是一个分布式的矩阵。
但是,我还没有找到一种方法来访问每个条目直接像这样的方式:
apply(int x, int y)
我只找到了功能,如:
public RDD<MatrixEntry> entries()
在这种情况下,我不得不遍历所有的条目,找出一个我想,这是不是有效的方法。
有没有人使用CoordinateMatrix
过吗?
我应该怎么做才能从每个条目CoordinateMatrix
有效?
简短的答案是你不知道。 RDDS和CoordinateMatrix
或多或少周围的包装的RDD[MatrixEntry]
不能很好地适合用于随机接入。 此外RDDS是不可变的,所以你不能简单地修改一个条目。 如果这是你的要求,你可能看错技术。
有随机访问了一些有限的支持,如果你使用PairRDD
。 如果这样的RDD划分,您可以使用lookup
方法来有效地恢复单个值:
val n = ??? // Number of partitions
val pairs = mat.
entries.
map{case MatrixEntry(i, j, v) => ((i, j), v)}.
partitionBy(new HashPartitioner(n))
pairs.lookup((1, 1))