I've been thinking about this, and I think the mapUDF part of mrTriplets is a little bit confusing because we are asking the user to return an Iterator of (Vid, A).
How about we change mapUDF's signature from EdgeTriplet to (EdgeTriplet, Emitter), and the Emitter has a function sendMessage(targetVid: Vid, message: A)?
This way it should be more efficient, but also more obvious what the mapUDF is doing.
@ankurdave @jegonzal @dcrankshaw