【发布时间】: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