【问题标题】:Complete distance matrix in MapReduceMapReduce中的完整距离矩阵
【发布时间】:2016-01-01 21:36:18
【问题描述】:

我对 MapReduce 比较陌生,我想到了以下问题:如何在 MapReduce 中计算完整(即非稀疏)距离矩阵?

我有一个包含 N 个实例的 2D 数据集,我必须评估这些点之间所有可能的距离并将它们存储在一个矩阵中。

到目前为止我所做的是

  • 让 Map 检索其块,评估这些点之间的距离:生成的矩阵将是一个 NxN 矩阵,其中包含一些距离和一些零。
  • Reduce 将连接(求和)此类矩阵,然后填充空隙(即块内距离,仍然为零的元素)

我认为这不是很有效(尤其是从记忆的角度来看)。

谁能赐教?

更新:我在上面的代码中做了一些优化。现在

  • Map 接收其块并评估这些点之间的距离,而不预先分配 NxN 矩阵,但预先分配 Nx3 矩阵(A 点中的第 1 列,B 点中的第 2 列,B 点中的第 3 列)
  • Reducer 预先分配了一个完全用零填充的 NxN 矩阵。现在填充由 Map 计算的距离(块间),然后填充空隙(即块内距离,仍然为零的元素)

毫无疑问,这是一个更好的解决方案,因为 Mappers 不需要构建整个 NxN 矩阵,但我认为它可以做得更好。

【问题讨论】:

    标签: matlab parallel-processing mapreduce distance-matrix


    【解决方案1】:

    我就是这样做的:地图任务只是评估给定实例j 与所有其他实例之间的距离。 Reducer 将这些距离连接到一个向量中,该向量写入磁盘。这样的记录确实是矩阵的jth 行。这对所有实例都进行,然后将写入磁盘的所有记录连接在一起。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-04
      • 2016-12-06
      • 2011-08-08
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多