-1
votes

Trouver des ID Vertex isolé à l'aide de GraphFrame

Quelle est la meilleure façon de trouver les identifiants de sommets isolés à l'aide de graph-librame? Avec la dernière version, nous pouvons utiliser "Dropisolatedvertices ()" pour les supprimer du graphique, mais je voudrais aussi connaître les identifiants d'entre eux.

merci


0 commentaires

3 Réponses :


0
votes

Une solution laideuse est la suivante:

notiso =  [row.id for row in g.dropIsolatedVertices().vertices.select("id").collect()]
iso = g.vertices.filter(g.vertices.id.isin(notiso) == False).select("id")


0 commentaires

0
votes

Un autre moyen consiste à utiliser la fonction connectéComponents code> et filtrer et sélectionner sur ce dont vous avez besoin à l'extrémité xxx pré>

résultat avec mon graphique p>

get_connected_components.show()
+-------+-------------+
|     id|    component|
+-------+-------------+
|     b6| 240518168576|
|     a3| 343597383680|
|     a4| 343597383680|
|     c7| 498216206336|
|     b2| 240518168576|
|     c9| 498216206336|
|     c5| 498216206336|
|     c1| 498216206336|
|     c6| 498216206336|
|     a2| 343597383680|
|     b3| 240518168576|
|     b1| 240518168576|
|     c8| 498216206336|
|alone11|1116691496960|
|     a1| 343597383680|
|     c4| 498216206336|
|     c3| 498216206336|
|alone12|1340029796352|
|     b4| 240518168576|
|     c2| 498216206336|
+-------+-------------+
only showing top 20 rows


my_conncected_vertices.show()
+-------------+---------------+
| component_id|number_vertices|
+-------------+---------------+
| 240518168576|              6|
|1116691496960|              1|
|1340029796352|              1|
| 498216206336|             10|
| 343597383680|              4|
+-------------+---------------+

my_isolated_vertices.show()
+-------+
|     id|
+-------+
|alone11|
|alone12|
+-------+


0 commentaires

0
votes
  Dataset<Row> afterDropIsolate = graph.dropIsolatedVertices().vertices();
  return graph.vertices().except(afterDropIsolate);

0 commentaires