Spark graphX ​​вне оптимизации памяти - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь использовать graphX ​​для вычисления чего-то вроде pageRank, и я обнаружил, что итерация graphX ​​всегда является OOM.Я новичок в GraphX, так что мне интересно, есть ли способ, который я могу оптимизировать?

Графический код graphX:

val simUpdates = graph.aggregateMessages[Double](
    ctx => ctx.sendToDst(ctx.srcAttr * ctx.attr), _ + _, TripletFields.Src)

  println("simRank mid iter")

  graph = graph.outerJoinVertices(simUpdates) {
    (_, oldSim, msgSumOpt) => msgSumOpt.getOrElse(0.0) * damp
  }.outerJoinVertices(sameNode){
    (_, oldSim, msgSumOpt) => msgSumOpt.getOrElse(oldSim)
  }

  if (i%1 == 0) {
    graph.edges.foreach(_ => Unit)
    println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date) + s" iter $i finish")
    graph.persist(StorageLevel.MEMORY_ONLY_SER)
    graph.checkpoint()
  }
...