0

Je le graphique suivant dans GraphxGraphx obtenir l'étiquette de sommet à partir id sommet

graph.vertices.foreach(println) 

(6109253945443866644,"Futurama"@en) 
(7558506336564503178,"AccessibleComputing"@en) 
(0,null) 
(-2278222762001827643,"Programming languages"@en) 
(-9007336571746445204,http://dbpedia.org/resource/Category:Presocratic_philosophers) 
(-3236797006683951166,http://dbpedia.org/resource/Category:Programming_languages) 
(-4159090027031366209,http://dbpedia.org/resource/Anaximenes_of_Miletus) 
(7722304331424482609,http://dbpedia.org/resource/Category:Futurama) 
(-323898215277667127,http://dbpedia.org/resource/AccessibleComputing) 

J'ai appliqué l'algorithme de composants connectés sur ce graphique dont la sortie est comme ci-dessous: -

ccGraph.vertices.foreach(println) 

(6109253945443866644,6109253945443866644) 
(7558506336564503178,-323898215277667127) 
(0,0) 
(-2278222762001827643,-3236797006683951166) 
(-9007336571746445204,-9007336571746445204) 
(-3236797006683951166,-3236797006683951166) 
(-4159090027031366209,-9007336571746445204) 
(7722304331424482609,6109253945443866644) 
(-323898215277667127,-323898215277667127) 

je peux » t trouver un moyen de trouver le nom de sommet/vertex pour (vertexID, vertexID) dans ccGraph de sorte que la sortie se transforme de
(vertexID, vertexID) => (vertexLabel, vertexLabel)

J'ai essayé l'approche suivante, mais a échoué

ccGraph.vertices.map({case arr => 
val k1 = graph.vertices.lookup(arr(0)) 
val k2 = graph.vertices.lookup(arr(1)) 
(k1,k2) 
}) 

<console>:51: error: (org.apache.spark.graphx.VertexId, org.apache.spark.graphx.VertexId) does not take parameters 
        ccGraph.vertices.map({case arr => val k1 = graph1.vertices.lookup(arr(0)) 
                         ^
<console>:52: error: (org.apache.spark.graphx.VertexId, org.apache.spark.graphx.VertexId) does not take parameters 
                val k2 = graph1.vertices.lookup(arr(1)) 
+0

Qu'entendez-vous par label de sommet? Lorsque vous imprimez un sommet, il est déjà affiché en tant que (vertex_id, vertex_value). – Dikei

+0

Lorsque vous imprimez les composants connectés ccGraph, alors il prend la forme (vertexid, vertexid) et non l'habituel (vertexid, vertexvalue) – user3663737

Répondre

0

L'algorithme de composants connectés génèrent un nouveau graphique avec la valeur de sommet par l'ID composant. Vous devez les joindre avec le graphique original si vous voulez obtenir la valeur originale.

ccGraph.joinVertices(graph.vertices) { (id, component_id, old_value) => 
    ... 
}