多くの重複した頂点を持つグラフがありますが、異なる属性 (Long) があります。
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)
パブリックコンストラクターなどは見つかりませんでした。
次のコードでグラフを作成する必要がありますか
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)