我在运行 GraphX 时遇到问题
val adjGraph= adjGraph_CC.vertices
.flatMap { case (id, (compID, adjSet)) => (mapMsgGen(id, compID, adjSet)) }
// mapMsgGen will generate a list of msgs each msg has the form K->V
.reduceByKey((fst, snd) =>mapMsgMerg(fst, snd)).collect
// mapMsgMerg will merge each two msgs passed to it
我期望 reduceByKey 做的是按键 (K) 对 flatMap 的整个输出进行分组,并使用提供的函数处理每个键 (K) 的值列表 (Vs)。
正在发生的是 flatMap 的每个输出(使用函数 mapMsgGen),它是 K->V 对(通常不是相同的 K)的列表,使用 reduceByKey 函数 mapMsgMerg 并在整个 flatMap 完成之前立即处理。
需要澄清一下,我不明白出了什么问题,还是我理解 flatMap 和 reduceByKey 错了?
问候,
马赫