如何在GraphX中的aggregateMessages中使用组合器

时间:2018-05-16 01:52:06

标签: apache-spark spark-graphx

在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的优势我的意思是"以顶点为中心",如果我使用mapcombineByKey函数,它将进行全局改组,这需要花费大量时间,与想法"以顶点为中心"

1 个答案:

答案 0 :(得分:0)

collectEdges API中的GraphOps可能有所帮助。

它收集每个顶点的邻居边缘并返回VertexRDD[Array[Edge[ED]]]类型,这意味着它会更改返回类型并同时收集消息,请参阅API documentation