2017-01-05 3 views
-1

Je construis un graphique à partir d'un RDD de tuples de noeuds source et destination, comme ceci:Comment obtenir la taille du plus grand composant connecté d'un graphique dans Spark?

Graph.fromEdgeTuples(rawEdges = edgeList, 1) 
  1. Tout d'abord, je ne comprenais pas tout à fait ce que le second paramètre est. De la documentation,

    defaultValue le sommet des attributs avec lesquels pour créer des sommets référencés par les bords

    Je ne comprends toujours pas. Deuxièmement, je ne trouve rien pour calculer la taille du plus gros composant. Il n'y a pas foreach mis en œuvre, ni map ou reduceByKey, ou toute autre chose après l'appel de la méthode connectedComponents.

Répondre

3
  1. defaultValue est un attribut affecté à tous les bords créés:

    val graph = Graph.fromEdgeTuples(sc.parallelize(Seq(
        (1, 2), (2, 3), (4, 5))), 1) 
    
    graph.edges.map(_.attr).distinct.collect 
    // Array[Int] = Array(1) 
    
  2. ids composant d'extrait et faire un worcount:

    val ids = graph.connectedComponents.vertices map((v: (Long, Long)) => v._2) 
    ids.map((_, 1L)).reduceByKey(_ + _)