微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Spark GraphX中,有一种方法可以更新/修改顶点值

如何解决在Spark GraphX中,有一种方法可以更新/修改顶点值

我正在使用Spark GraphX,并且有一个庞大的图形数据集。在所有顶点中,案例类Node保持从节点到其他特定节点的距离值。 乞求这些距离值是空的,在我的算法中,我需要在运行某些最短的路径/距离算法(A *,ALT等)时将其填充。

我知道VertexRDD和其他所有RDD都是不可变的,任何更改都会创建一个新的RDD。但是就我而言,有没有一种方法可以更新这些Node类,或者每当我需要创建一个全新的图来仅更新一个顶点时是否可以更新?

我也不明白下面代码的火花是什么 我有2个案例类,使用这些案例类创建的是顶点,而不是使用顶点和边创建的是图

case class IDT(borderIDTList: List[(Long,String,Long)])
case class Node(name: String,isBorderNode: Boolean,partition: String,var idt: Option[IDT])

val vertexN0 = (1L,Node("n0",false,"C1",None))
.
. // I'm creating other vertices and edges manually
.

val verticesRDD = sc.parallelize(seqOfVertices)
val edgesRDD = sc.parallelize(seqOfEdges)

val graph = Graph(verticesRDD,edgesRDD)
graph.cache()

// this part I don't understand
// if all RDD's are immutable how can I get modified graph here

var myIDT: Option[IDT] = Some(IDT(List((3,"a",2))))
graph.vertices.filter(vertex => vertex._1 == 1L).foreach(vtx => vtx._2.idt = myIDT)
 
graph.vertices.collect().foreach(println(_))

上面的代码为我提供了一个在顶点id = 1中具有新IDT值的图形

graph.vertices返回新的VertexRDD,并且在此处进行更改时图形的效果如何?该图是否引用了我从原始图衍生而来的VertexRDD?

还是在后台spark将新的VertexRDD与现有图形连接起来并返回一个新图形?我很困惑。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。