Как рассчитать степень в GraphX ​​при двухступенчатом соединении - PullRequest
1 голос
/ 04 апреля 2020

У меня есть ориентированный граф, скажем, как fromNode -> toNode. Я хочу рассчитать общее количество входящих подключений на "toNode", включая подключения 1 или 2 перехода.

Например: существует соединение с двумя переходами от узла X к узлу Y, если существует узел Z такой, что X соединяет Z и Z соединяет Y.

1 Ответ

0 голосов
/ 27 апреля 2020

Я думаю, что вы можете использовать aggregateMessages () дважды.
На первом шаге собрать inDegrees для каждого узла и сохранить их.
на втором шаге собрать информацию inDegrees в узле до конечного узла.
ИЛИ, вы можете сначала использовать externalJoinVertices (), например:

yourGraph = followerGraph.outerJoinVertices(
        yourGraph.ops().inDegrees(),
        new setDegreesMsg()//use the function to combine inDegrees info with yourGraph
);

А затем использовать aggregateMessages () для сбора информации inDegrees в соседних узлах, например:

        degrees:RDD[(VertexId, Int)] = yourGraph.aggregateMessages(
                new getInfoSendMsg(),
                new getInfoMergeMsg()
);
...