如何在Spark中直接访问CoordinateMatrix条目?

如何在Spark中直接访问CoordinateMatrix条目?,matrix,apache-spark,distributed-computing,sparse-matrix,Matrix,Apache Spark,Distributed Computing,Sparse Matrix,我想用Spark存储一个大的稀疏矩阵, 所以我尝试使用坐标矩阵,因为它是一个分布式矩阵 但是,我没有找到直接访问每个条目的方法,例如: apply(int x, int y) 我只发现了如下功能: public RDD<MatrixEntry> entries() 公共RDD条目() 在这种情况下,我必须循环遍历条目以找到我想要的条目,这不是一种有效的方法 以前是否有人使用过CoordinateMatrix 我应该怎么做才能有效地从协调矩阵中获取每个条目呢?简而言之,你没有。R

我想用Spark存储一个大的稀疏矩阵, 所以我尝试使用
坐标矩阵
,因为它是一个分布式矩阵

但是,我没有找到直接访问每个条目的方法,例如:

apply(int x, int y)
我只发现了如下功能:

public RDD<MatrixEntry> entries()
公共RDD条目()
在这种情况下,我必须循环遍历条目以找到我想要的条目,这不是一种有效的方法

以前是否有人使用过
CoordinateMatrix


我应该怎么做才能有效地从协调矩阵中获取每个条目呢?

简而言之,你没有。RDD和
CoordinateMatrix
或多或少是
RDD[Matrix Entry]
的包装器,不太适合随机访问。此外,RDD是不可变的,因此您不能简单地修改单个条目。如果这是您的需求,那么您可能选择了错误的技术

如果使用
PairRDD
,则对随机访问的支持有限。如果对这样的RDD进行分区,您可以使用
查找
方法高效地恢复单个值:

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))