Spark的个性化Pagerank

时间:2016-09-27 07:57:17

标签: 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)))
  .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:88减少)

     

INFO最后阶段:ResultStage 63(在VertexRDDImpl.scala减少:88)

     

INFO最后阶段的父母:列表(ShuffleMapStage 1,ShuffleMapStage 3,ShuffleMapStage 62)

     

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

     

INFO删除了localhost上的broadcast_4_piece0:内存中的33231(大小:2.7 KB,免费:22.7 GB)

以下是spark控制台的屏幕截图: Jobs console

0 个答案:

没有答案