我在努力定义 sendMessage
graphx中pregel中的函数将每个节点属性发送给其邻居。图表的结构如下:
(1,(4,0.08))
(5,(9,0.9))
...
密钥是node id,每个节点都有一个 Tuple2[VertexId,Double]
作为它的属性,它应该把它们送给它的邻居。这就是我要写的代码:
def run[VD, ED: ClassTag](graph: Graph[VD, ED], maxSteps: Int): Graph[VD, ED] = {
val temp_graph: Graph[(VertexId, Double), ED] = graph.mapVertices((x, y)=> (x,1.toDouble))
def sendMessage(e: EdgeTriplet[VertexId, ED]): Iterator[(VertexId,(VertexId, Double))] = {
Iterator((e.srcId,e.dstAttr), (e.dstId,e.srcAttr))
}
对于send message函数,我得到以下错误
有人能帮我解决这个错误吗??
1条答案
按热度按时间rmbxnbpk1#
问题就在这里:您有一个其nodes属性为的图
(VertexId,Double)
但你已经定义了e: EdgeTriplet[VertexId, ED]
这是需要纠正的,也是应该纠正的e: EdgeTriplet[(VertexId,Double), ED]
. 这意味着图中的顶点或节点属性(VertexId,Double)
作为他们的财产。