2016-07-14 1 views
0

Wie kann ich verschiedene Arten von Kanten in der gleichen GraphX ​​Grafik hinzufügen. Zum Beispiel kann die Kante zwischen dem Knoten A und dem Knoten B ein String-Attribut haben und eine Kante zwischen dem Knoten X und dem Knoten Y kann (Int, Int) attr aufweisen.verschiedene Arten von Kanten in graphx

Gibt es eine Möglichkeit, Kantenvererbung in graphX ​​zu implementieren? Kann jemand ein Beispiel geben?

Antwort

0

Die Scheitelpunkt- und Kantentypen eines Diagramms werden mit den Typparametern VD and ED unter Graph angegeben. Sie können verschiedene Kantendaten an verschiedenen Kanten speichern, sofern sie eine gemeinsame Oberklasse verwenden. Übergeben Sie die allgemeine Oberklasse als den ED-Typenparameter, wenn Sie das Diagramm erstellen. In Ihrem Beispiel ist ein gemeinsamer Supertyp von String und (Int, Int)Any. Sie können ein Diagramm mit Kantenattributen beider Typen wie folgt erstellen:

+0

weiter darüber, wenn ich GroupEdges auf der gleichen Grafik verwenden muss, wie kann das getan werden? –

+0

Wenn ich ein benutzerdefiniertes Edge-Attribut (zB MySuperEdgeType) habe, das in diff EdgeTypes unterklassifiziert werden kann, wie würde dann die Gruppierung von Edges stattfinden? trait MySuperEdge { def edgeType: String } Fallklasse SubEdge1 (edType: String, Totalcnt: Int) erstreckt MySuperEdge { def edgeType: String = {return edType} def edgeAttrValue: Int = {Totalcnt zurück} } Fallklasse SubEdge2 (edType: String, Verkauf: Int, Gewinn: Int,) sich MySuperEdge { def edgeType: String = {return edType} def val1: Int = {return Umsatz} def val2: Int = { Gewinn zurückgeben} } –

+0

val baseGraph = Graph (Knoten, edgeRDD) wobei edgeRDD RDD ist of Edge [MySuperEdge] In diesem Fall würde ich nach der Erstellung des Diagramms gruppierenEdges? –

Verwandte Themen