Apache spark 为什么我不能在Spark中使用贴图功能更改节点的属性?
我正在Spark中使用GraphX处理图形。我有一个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._
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对新值执行每个操作