我得到了一个图,其中每个顶点都有x,y,z坐标(比方说这是一个图),我需要计算从顶点开始的所有向量的和。
图形三元组如下所示:
myGraph.triplets.take(1).foreach(println)
((399,("vert1",17.007335238880298,-60.74262122298819,37.95876598733492)),(400,("vert2",57.5313161995229,16.706850124236766,42.8936364565493)))
所以对于顶点我有以下几点
id, x, y, z
("vert1",17.007335238880298,-60.74262122298819,37.95876598733492)
...
我知道我可以通过aggregatemessages函数将所有向量相加,并尝试类似的方法(在许多变体中)
myGraph.aggregateMessages[(Double,Double,Double)](
e => e.sendToSrc( e.dstAttr._2, e.dstAttr._3, e.dstAttr._4),
(a,b,c) => (a._1 + b._1, a._2 + b._2, a._3 + b._3)
).take(10).foreach(println)
哪里
e.dstAttr._2 is an x coord,
e.dstAttr._3 is an y coord,
e.dstAttr._3 is z coord or destination,
但是我不能创建一个合适的mergemsg函数来执行(简化)以下操作
(dstAttr._2 - srcAttr._2, dstAttr._3 - srcAttr._3, dstAttr._4 - srcAttr._4)
所以如果我能从源坐标中减去目标坐标,剩下的就可以了。但是scala语法加上spark这一部分缺乏真正的扩展指南给我带来了一个问题。
有人能告诉我mergemsg函数应该是什么样子吗?
暂无答案!
目前还没有任何答案,快来回答吧!