В 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
, это будет производить глобальные перетасовки, которые стоят много времени, вопреки идее "центрирование по вершинам"