【问题标题】:How to access CoordinateMatrix entries directly in Spark?如何在 Spark 中直接访问 CoordinateMatrix 条目?
【发布时间】:2015-07-24 19:52:42
【问题描述】:

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

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

apply(int x, int y)

我只找到了这样的功能:

public RDD<MatrixEntry> entries()

在这种情况下,我必须遍历条目以找出我想要的条目,这不是有效的方法。

有人用过CoordinateMatrix吗?

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

【问题讨论】:

    标签: matrix apache-spark distributed-computing sparse-matrix


    【解决方案1】:

    简短的回答是你没有。 RDD 和CoordinateMatrix 或多或少是RDD[MatrixEntry] 的包装,不太适合随机访问。此外,RDD 是不可变的,因此您不能简单地修改单个条目。如果这是您的要求,您可能正在寻找错误的技术。

    如果您使用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))
    

    【讨论】:

      猜你喜欢
      • 2017-12-01
      • 2016-07-15
      • 2015-03-20
      • 1970-01-01
      • 2018-09-08
      • 2010-09-16
      • 2011-03-19
      • 2021-03-18
      • 1970-01-01
      相关资源
      最近更新 更多