Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Not A Problem
-
2.1.1
-
None
-
None
Description
Correct me if I am wrong
I think there are three places where the pagerank calculation is incorrect
1st) in the VertexProgram (line 318 of PageRank.scala in spark 2.1.1)
val newPR = oldPR + (1.0 - resetProb) * msgSum
it should be
val newPR = resetProb + (1.0 - resetProb) * msgSum
2nd) in the message sending part (line 336 of the same file)
Iterator((edge.dstId, edge.srcAttr._2 * edge.attr))
should be
Iterator((edge.dstId, edge.srcAttr._1 * edge.attr))
as we should be sending the edge weight multiplied by the current pagerank of the source vertex (not the vertex's delta)
3rd) the tol check against the abs of the delta (line 335)
if (edge.srcAttr._2 > tol) {
should be
if (Math.abs(edge.srcAttr._2) > tol) {