1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| val maxIter = 1 val vertexs = graph.vertices.collect() val resultDegree = vertexs.map(vd => { iterNum = 0 val nodeNums = dfs(graph, vertexId = vd._1, mutable.Seq.empty[VertexId])(maxIter).size - 1 (vd._1, nodeNums) }) resultDegree.foreach(println) println("degree first" + resultDegree(0))
def dfs(g: Graph[Long, Int], vertexId: VertexId, visited: mutable.Seq[VertexId])( maxIter: Int): mutable.Seq[VertexId] = { if (visited.contains(vertexId)) { visited } else { if (iterNum > maxIter) { return visited } val newVisited = visited :+ vertexId val neighbors = g.collectNeighbors(EdgeDirection.Out).lookup(vertexId).flatten println("neighbors size:" + neighbors.size) iterNum = iterNum + 1 println("iterNum:" + iterNum) val resultVisited = neighbors.foldLeft(newVisited)((x, y) => dfs(g, y._1, x)(maxIter)) iterNum = iterNum - 1 resultVisited } }
|