Scala 带Spark的个性化Pagerank
我试图用spark计算200M边图上的个性化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
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的屏幕截图: