Apache spark 为什么我不能在Spark中使用贴图功能更改节点的属性?

Apache spark 为什么我不能在Spark中使用贴图功能更改节点的属性?,apache-spark,spark-graphx,Apache Spark,Spark Graphx,我正在Spark中使用GraphX处理图形。我有一个valcommon\u邻居:RDD[VertexId]保存一些VertexId。我使用map函数将其转换为一个结构,例如(node,1),其中node是顶点的ID,1是其初始属性。转换代码如下所示: val p =common_neighbors.map(x=>(x,1)) val x=p.map(node=>{ val temp_property=graph.vertices.filter(x=>x._

我正在Spark中使用GraphX处理图形。我有一个
valcommon\u邻居:RDD[VertexId]
保存一些VertexId。我使用map函数将其转换为一个结构,例如(node,1),其中node是顶点的ID,1是其初始属性。转换代码如下所示:

val p =common_neighbors.map(x=>(x,1))
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))
        }
        })
我有一个具有如下结构的图:(node,node_属性(label,isDefined))。例如(1,(14,true))。这意味着ID=1的节点具有label=14且已定义

如果图中的节点标签大于5,我希望以并行和分布式方式转换p中的节点属性。代码如下:

val p =common_neighbors.map(x=>(x,1))
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))
        }
        })

但是当我执行代码时,我会出错。这有什么问题?我如何解决这个问题?

我理解您的问题,您正在另一个RDD中使用RDD,这是不正确的。相反,您可以这样做: 您可以使用以下代码将您的公共_邻居与真实图形连接起来:

val new_val=common_neighbors.join(work_graph.vertices)
然后通过一些映射转换,您可以在新值中创建图形的结构,然后您可以使用map或mapValues对新值执行每个操作