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

Я считаю, что правильно объяснил вариант использования, пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Конечная цель состоит в том, чтобы назначить один определяемый пользователем идентификатор для каждой сильно связанной группы.


person spark-graphx novice    schedule 12.06.2017    source источник


Ответы (1)


Я использую 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.

person Arash    schedule 16.10.2017