Scala 带Spark的个性化Pagerank

Scala 带Spark的个性化Pagerank,scala,apache-spark,pagerank,Scala,Apache Spark,Pagerank,我试图用spark计算200M边图上的个性化pagerank。 我可以为单个节点计算它,但不能为多个节点计算 这是我到目前为止写的代码: val ops : Broadcast[GraphOps[Int, Int]] = sc.broadcast(new GraphOps(graph)) vertices.map(vertex => (vertex._1, ops.value.personalizedPageRank(vertex._1, 0.00001, 0.2))) .mapVal

我试图用spark计算200M边图上的个性化pagerank。 我可以为单个节点计算它,但不能为多个节点计算

这是我到目前为止写的代码:

val ops : Broadcast[GraphOps[Int, Int]] = sc.broadcast(new GraphOps(graph))
vertices.map(vertex => (vertex._1, ops.value.personalizedPageRank(vertex._1, 0.00001, 0.2)))
  .mapValues(_.vertices.filter(_._2 > 0))
  .mapValues(_.sortBy(_._2, false))
  .mapValues(_.mapValues(d => "%.12f".format(d)))
  .mapValues(_.take(1000))
  .mapValues(_.mkString("\t"))
  .saveAsTextFile("hdfs://localhost:9000/user/spark/out/vertices-ppr")
其中顶点是VertexRDD[Int],是图顶点的子集。 如果它很小(如1、2或10个元素),则代码运行良好,但如果它较大(100个元素),则在第一个任务完成后,代码将冻结在作业2上。控制台的最后几行是:

INFO获得了包含22个输出分区的作业13(VertexRDDImpl.scala处的reduce:88)

信息最终阶段:结果阶段63(顶点处减少RDDIMPL.scala:88)

最后阶段的信息父级:列表(ShuffleMapStage 1、ShuffleMapStage 3、ShuffleMapStage 62)

信息缺少父母:列表(ShuffleMapStage 3,ShuffleMapStage 62)

信息已删除本地主机上的广播片段0:内存中的33231(大小:2.7KB,可用空间:22.7GB)

以下是spark console的屏幕截图: