Uh oh!
There was an error while loading. Please reload this page.
Introducing an Improved Pregel API - #1217
Conversation
jegonzal
commented
Jun 25, 2014
@ankurdave unfortunately to full accept this change we will need to break compatibility with the current Pregel API. I cannot seem to overload the apply method. |
jegonzal
commented
Jun 26, 2014
I spent some time verifying the math behind the PageRank (in particular starting values) to ensure that the delta formulation behaves identically to the static formulation which matches other reference implementations of PageRank. One of the key changes is I have added an extra normalization step at the end of the calculation to address a discrepancy in how we handle dangling vertices. |
There was a problem hiding this comment.
Uncommenting lines 279 and 280 leads to a substantial slow down in later iterations indicating that there is still an issue with unpersist. @ankurdave any thoughts?
jegonzal
commented
Jun 26, 2014
@ankurdave and @rxin there is an issue with the current API. The defsendMessageWrapper(triplet: EdgeTriplet[(VD, Boolean),ED]):Iterator[(VertexId, A)] = {
valsimpleTriplet=newEdgeTriplet[VD, ED]()
simpleTriplet.set(triplet)
simpleTriplet.srcAttr = triplet.srcAttr._1
simpleTriplet.dstAttr = triplet.dstAttr._1
valctx=newEdgeContext(i, triplet.srcAttr._2, triplet.dstAttr._2)
sendMsg(simpleTriplet, ctx)
}
// Compute the messages for all the active verticesvalmessages= g.mapReduceTriplets(sendMessageWrapper, mergeMsg, Some((activeVertices, activeDirection)))thereby allowing the user a simple sendMsg: (EdgeTriplet[VD, ED], EdgeContext) =>Iterator[(VertexId, A)]However because we access the source and destination vertex attributes the byte code inspection will force a full 3-way join even if the user doesn't actually read the fields. The simplest solution would be to change the send message interface to operate on the extended vertex attribute (containing the active field). sendMsg: (EdgeTriplet[(VD, Boolean), ED], EdgeContext) =>Iterator[(VertexId, A)] |
SparkQA
commented
Aug 28, 2014
QA tests have started for PR 1217 at commit
|
SparkQA
commented
Aug 28, 2014
QA tests have finished for PR 1217 at commit
|
SparkQA
commented
Sep 5, 2014
Can one of the admins verify this patch? |
…roperty. This addresses the issue where byte-code inspection would always force a 3-way join.
jegonzal
commented
Oct 30, 2014
This is still work in progress and we need to discuss these API changes. |
jegonzal
commented
Nov 13, 2014
@ankurdave is this already covered in your latest PR? |
jegonzal
commented
Nov 19, 2014
@ankurdave should I try and update this with your latest changes or do you want to create a new one? |
ankurdave
commented
Nov 22, 2014
@jegonzal I'm going to look at this over the weekend to try to get it into 1.2. |
nchammas
commented
Apr 27, 2015
@jegonzal@ankurdave - This PR has gone stale. Do we want to update it or close it for later? |
ankurdave
commented
Apr 28, 2015
Let's close this issue for later. |
srowen
commented
Jul 17, 2015
(For Github close script:) Do you mind closing this PR? |
The initial Pregel API coupled voting to halt with message reception. In this revised the vertex program receives a
PregelContextwhich enables the user to signal whether or not to halt as well as access the current iteration number.