假设我有以下图表:
scala> v.show()
+---+---------------+
| id|downstreamEdges|
+---+---------------+
|CCC| null|
|BBB| null|
|QQQ| null|
|DDD| null|
|FFF| null|
|EEE| null|
|AAA| null|
|GGG| null|
+---+---------------+
scala> e.show()
+---+---+---+
| iD|src|dst|
+---+---+---+
| 1|CCC|AAA|
| 2|CCC|BBB|
...
+---+---+---+
我想运行一个聚合来获取从目标顶点发送到源顶点的所有消息(不仅仅是总和、第一个、最后一个等)。所以我想运行的命令是这样的:
g.aggregateMessages.sendToSrc(AM.edge("id")).agg(all(AM.msg).as("downstreamEdges")).show()
除了该功能all
不存在(我不知道)。输出将类似于:
+---+---------------+
| id|downstreamEdges|
+---+---------------+
|CCC| [1, 2]|
...
+---+---------------+
我可以将上述功能与first
或last
代替 (the non-existent)一起使用all
,但他们只会给我
+---+---------------+
| id|downstreamEdges|
+---+---------------+
|CCC| 1|
...
+---+---------------+
或者
+---+---------------+
| id|downstreamEdges|
+---+---------------+
|CCC| 2|
...
+---+---------------+
分别。我怎样才能保留所有条目?(可能有很多,不仅仅是 1 和 2,而是 1、2、23、45 等)。谢谢。