计算graphx中的向量和

ctzwtxfj  于 2021-05-17  发布在  Spark
关注(0)|答案(0)|浏览(274)

我得到了一个图,其中每个顶点都有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函数应该是什么样子吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题