如何访问直接在星火CoordinateMatrix条目?(How to access Coordin

2019-10-24 04:34发布

我想存储使用星火大稀疏矩阵,所以我试图用CoordinateMatrix ,因为它是一个分布式的矩阵。

但是,我还没有找到一种方法来访问每个条目直接像这样的方式:

apply(int x, int y)

我只找到了功能,如:

public RDD<MatrixEntry> entries()

在这种情况下,我不得不遍历所有的条目,找出一个我想,这是不是有效的方法。

有没有人使用CoordinateMatrix过吗?

我应该怎么做才能从每个条目CoordinateMatrix有效?

Answer 1:

简短的答案是你不知道。 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))


文章来源: How to access CoordinateMatrix entries directly in Spark?