val rdd1 = sc.parallelize(Seq((1,2),(1,3),(1,4),(2,3),(2,4),(3,4)))
边缘(Rdd1)通过创建。
我想找到图中每个顶点的度数。
我想向RDD1添加相反的顺序。
(2,1) (3,1) (4,1 ) (3,2) (4,2) (4,3)
将被添加,以便
我可以通过每个键的值数找到顺序。
如何在rdd1的元素之间添加(y,x) to (x,y)
?
答案 0 :(得分:1)
rdd1.map(s=>((s._2,s._1),s))
((2,1),(1,2))
((4,2),(2,4))
((3,2),(2,3))
((3,1),(1,3))
((4,3),(3,4))
((4,1),(1,4))
答案 1 :(得分:1)
如果要使用Spark和图表,可以看看GraphX。
要找到图中顶点的度数,可以使用
val edges = spark.sparkContext.parallelize(Seq((2,1),(3,1),(4,1 ),(3,2),(4,2) ,(4,3)))
.map(t => (t._1.toLong,t._2.toLong)) //the ids of the vertices have to be Long
val graph = Graph.fromEdgeTuples(edges, 0) //create a (possibly distributed) graph
val degrees = new GraphOps(graph).degrees //calculate the degrees of all vertices
degrees.foreach(println)
打印
//(vertex-id, degree)
(4,3)
(2,3)
(3,3)
(1,3)