我有一个包含许多重复顶点的图,但具有不同的属性(长)。
val vertices: RDD[(VertexId, Long)] ...
val edges: RDD[Edge[Long]] ...
val graph = Graph(vertices, edges, 0L)
默认情况下,GraphX 会将重复顶点的属性与默认函数合并
VertexRDD(vertices, edges, defaultVal, (a, b) => a)
所以它取决于顶点的顺序,哪个属性将留在最终图中。
我想知道有没有办法设置这个合并函数?例如,因为我需要将重复的顶点与以下函数合并
(a,b) => min(a,b)
我没有找到任何公共构造函数或其他东西。
我是否需要使用以下代码创建 Graph
val edgeRDD = EdgeRDD.fromEdges(edges)(classTag[ED], classTag[VD])
.withTargetStorageLevel(edgeStorageLevel).cache()
val vertexRDD = VertexRDD(vertices, edgeRDD, defaultVertexAttr, (a,b)=>min(a,b))
.withTargetStorageLevel(vertexStorageLevel).cache()
GraphImpl(vertexRDD, edgeRDD)