使用Spark RDD查找路径成本

时间:2015-11-24 20:40:33

标签: apache-spark rdd

我正在使用Spark来设计TSP求解器。从本质上讲,RDD中的每个元素都是一个3元组(id, x, y),其中id是一个点的索引,x-y是该点的坐标。给定一个存储3元组序列的RDD,如何评估该序列的路径成本?例如,序列(1,0,0),(2,0,1),(3,1,1)将给出成本1 + 1 = 2(从第一点到第二点,然后到第三点)。似乎为了做到这一点,我必须知道Spark如何分割序列(RDD)。另外,如何评估两个分区的边界点之间的成本?或者我有什么简单的操作吗?

1 个答案:

答案 0 :(得分:0)

通过任何并行处理,您需要认真考虑单个数据元素是什么,以便只有需要在一起的数据才能在一起。

因此,不是每行都是一个点,而是每一行都应该是定义路径的点数组,此时使用Spark计算总路径长度变得容易。您只需使用通常用于计算给定定义点的线段数组总长度的任何内容。

但即便如此,我们还不清楚我们是否需要点的完整通用性。对于TSP,候选解决方案是包含所有位置的路径,这意味着我们不需要为每个解决方案存储城市的位置,或者每次都计算距离。我们只需要计算一个距离矩阵,然后我们可以广播,这样每个Spark工作人员都可以访问它,然后查找距离而不是计算距离。

(它实际上是位置ID的排列,而不仅仅是它们的列表,它可以简化更多的事情。)