我是spark和spark-graphx的新手。我尝试运行强连接组件,但我只获得连接的三元组。
我在这里寻找的是获得所有顶点(顶点组),它们只是强连接(包括单个节点)。
示例:
Vertex Edge description
1 2 rule1
1 3 rule1
2 3 rule1
3 4 rule1
4 5 rule1
5 6 rule1
5 7 rule1
9 10 rule2
10 11 rule2
10 12 rule2
强关联组件的输出:
(1,2,3) - Rule1
(4) - Rule1
(5,6,7)- Rule1
(9,10,11,12)- Rule2
我相信我正确解释了用例,如果您需要更多详细信息,请告诉我。
最终目标是为每个强连接组分配一个用户定义的ID。
答案 0 :(得分:0)
我使用PySpark,如果我尝试你的例子,我可能会得到DataFrame格式的输出如下:
+---------------+
|id | component |
+---+-----------+
|1 |rule1 |
|2 |rule1 |
|3 |rule1 |
|4 |rule1 |
|5 |rule1 |
|6 |rule1 |
|7 |rule1 |
|9 |rule2 |
|10 |rule2 |
|11 |rule2 |
|12 |rule2 |
+---+-----------+
正如您所知,PySpark是Python API,它仍然可以解释Scala脚本。我不知道为什么Scala会在单独的行中打印结果(可能是因为mapReduce并行应用算法,一旦达到收敛就打印出输出)。但是我认为你可以汇总结果并说1,2,3,4,5,6,7是强连接的并且属于rule1组。并且10,11,12属于规则2。