这个发现SSSP代码(单源最短路径)是否在Spark Cluster中起作用?

时间:2019-05-24 01:53:03

标签: scala apache-spark spark-graphx

我正在使用scala查找SSSP。您可以在我的代码中看到,我已经使用RandomVertexCut分区策略对图形进行了分区,并且假定边缘已在多个节点中的所有分区中分布。

我想知道SSSP的此代码是否在Spark群集中有效(群集中的所有节点都将运行此代码)。如果此代码仅在主节点上运行,而不在集群中的所有节点上运行,我感到怀疑。

仅供参考:我将其写入sssp.scala文件中,并以这种方式运行:

bin/spark-shell --master spark://<IP Master>:<PORT> --executor-memory 6G -i sssp.scala

源代码:

val graph = GraphLoader.edgeListFile(sc, "data/graphx/followers.txt", false, 12);

val partitionedGraph = graph.partitionBy(PartitionStrategy.RandomVertexCut);

val sourceId = 1;

val initialGraph = partitionedGraph.mapVertices((id, _) => if (id == sourceId) 0.0 else Double.PositiveInfinity);
val sssp = initialGraph.pregel(Double.PositiveInfinity)(
  (id, dist, newDist) => math.min(dist, newDist),
  triplet => { //send message
    if(triplet.srcAttr + 1 < triplet.dstAttr) {
      Iterator((triplet.dstId, triplet.srcAttr + 1));
    } else {
      Iterator.empty
    }
  },
  (a,b) => math.min(a,b)
);

sssp.vertices.foreach(println);

0 个答案:

没有答案