Я пытаюсь использовать 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()
}