2016-05-06 10 views
0

Ich habe mich im Internet nach Beispielen des Feldes inDegrees für Graphen in GraphX ​​umgesehen und sie haben alle gesagt, dass es für jeden Eckpunkt im Graphen unabhängig zurückgibt. Aber wenn ich das folgende Beispiel mache:Spark Scala GraphX: InDegrees gibt nicht indegree für Knoten mit 0 indegree zurück

val a = sc.parallelize(List(Edge(1L, 2L, 3L))) 
val g = Graph.fromEdges[Long, Long](a, 0) 
g.numVertices 
g.inDegrees.take(5).foreach(println) 

Ich bekomme 2 Vertices, aber nur 1 indegree Paar wird zurückgegeben. Dies scheint eine seltsame Implementierung zu sein. Mache ich etwas falsch?

Antwort

2

Ja, inDegrees gibt keine Scheitelpunkte mit Nullwert zurück. In ähnlicher Weise gibt outDegrees keine Scheitelpunkte mit null outdegree zurück. Dies ist jedoch in der Regel kein Problem, da Operationen mit RDD[(VertexID, U)] wie Joins mit Option funktionieren; siehe Beispiel von GraphX ​​guide:

// A graph where the vertex property is the out degree 
val inputGraph: Graph[Int, String] = 
    graph.outerJoinVertices(graph.outDegrees)((vid, _, degOpt) => degOpt.getOrElse(0))