почему я не могу изменить свойство узлов с помощью функции карты в Spark? - PullRequest
0 голосов
/ 04 марта 2020

Я работаю с GraphX ​​в Spark для обработки графика. у меня есть val common_neighbors: RDD[VertexId], который содержит некоторый vertexId. я использую функцию карты, чтобы преобразовать ее в такую ​​структуру, как (узел, 1), у которого узел является идентификатором вершины, а 1 - его начальным свойством. код для преобразования приведен ниже:

val p =common_neighbors.map(x=>(x,1))

У меня есть график, который имеет такую ​​структуру, как: (узел, узел_произведения (метка, isDefined)). например (1, (14, правда)). это означает, что узел с ID = 1 имеет метку = 14 и isDefined.

Я хочу преобразовать свойство узлов в p параллельно и распределенным способом, если метка узла на графике больше 5. Код ниже:

val x=p.map(node=>{


        val temp_property=graph.vertices.filter(x=>x._1==node._1).values.take(1)
        if(temp_property(0).label > 5) {

          (node._1,((temp_property(0).label)+5))
        }
        })

Но когда я выполняю код, я получаю ошибки. В чем проблема с этим? Как я могу это исправить?

1 Ответ

0 голосов
/ 04 марта 2020

как я понял вашу проблему, вы используете RDD внутри другого RDD, это не так. вместо этого вы можете сделать это: вы можете объединить ваши common_neighbors с реальным графом, используя следующий код:

val new_val=common_neighbors.join(work_graph.vertices)

, затем с помощью некоторого преобразования карты вы можете сделать структуру вашего графа в new_val, а затем вы можно использовать map или mapValues ​​для выполнения каждой операции со значениями new_val

...