joinVertices
若graph顶点的Id在点集pointTest中,则将graph顶点的属性使替换为点集pointTest的点属性;
若graph顶点Id不在点集pointTest中,则不对graph顶点属性做任何修改。
1.创建graph
scala> val graph = GraphLoader.edgeListFile(sc, "file:///home/hadoop/1.txt")
scala> graph.triplets.collect.foreach(println(_))
2.自定义pointTest点集
scala> val pointTest: RDD[(VertexId,Int)] = sc.parallelize(Array((1L,10),(2L,10),(3L,10)))
3.将graph顶点属性置为零;joinVertices:
scala> val outputGraph = graph.mapVertices((id,attr) => 0).joinVertices(pointTest)((_,_,optDeg) => optDeg)
scala> outputGraph.triplets.collect.foreach(println(_))
4.outJoinVertices
scala> val outputGraph = graph.mapVertices((id,attr) => 0).outerJoinVertices(pointTest)((_,_,optDeg) => optDeg.getOrElse(0))
—————————–
将顶点属性改为各点出度:
scala> val outputGraph = graph.mapVertices((id,attr) => 0).outerJoinVertices(graph.outDegrees)((_,_,optDeg) => optDeg.getOrElse(0))