如何在Spark中直接访问CoordinateMatrix条目?
我想用Spark存储一个大的稀疏矩阵, 所以我尝试使用如何在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
坐标矩阵
,因为它是一个分布式矩阵
但是,我没有找到直接访问每个条目的方法,例如:
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))