在GraphX中的aggregateMessages API
class Graph[VD, ED] {
def aggregateMessages[Msg: ClassTag](
sendMsg: EdgeContext[VD, ED, Msg] => Unit,
mergeMsg: (Msg, Msg) => Msg,
tripletFields: TripletFields = TripletFields.All)
: VertexRDD[Msg]
}
但是我想修改合并阶段的返回类型,这意味着我想要combineByKey
而不是reduceByKey
,我怎样才能根据GraphX的优势做到这一点?或者换句话说,我怎样才能使用sendMsg
的结果并跳过此函数的mergeMsg
阶段?
GraphX的优势我的意思是"以顶点为中心",如果我使用map
和combineByKey
函数,它将进行全局改组,这需要花费大量时间,与想法"以顶点为中心"
答案 0 :(得分:0)
collectEdges
API中的GraphOps
可能有所帮助。
它收集每个顶点的邻居边缘并返回VertexRDD[Array[Edge[ED]]]
类型,这意味着它会更改返回类型并同时收集消息,请参阅API documentation