更多代码请见:https://github.com/xubo245/SparkLearning
1解释
统计边和点和最大度
2.代码:
/** * @author xubo * ref http://spark.apache.org/docs/1.5.2/graphx-programming-guide.html * http://snap.stanford.edu/data/web-Google.html * time 20160503 */ package org.apache.spark.graphx.learning import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.graphx.Graph import org.apache.spark.graphx.Graph.graphToGraphOps import org.apache.spark.graphx.VertexId import org.apache.spark.graphx.util.GraphGenerators import org.apache.spark.graphx.GraphLoader import org.apache.spark.graphx.PartitionStrategy import org.apache.spark.graphx.VertexRDD object webGoogle { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("ConnectedComponents").setMaster("local[4]") val sc = new SparkContext(conf) // Parse the edge data which is already in userId -> userId format val graph = GraphLoader.edgeListFile(sc, "file/data/graphx/input/web-Google.txt") println("graph.numEdges:" + graph.numEdges); println("graph.numVertices:" + graph.numVertices); println("\n edges 10:"); graph.edges.take(10).foreach(println); println("\n vertices 10:"); graph.vertices.take(10).foreach(println); //*************************************************************************************************** //******************************* 图的属性 ***************************************** //*************************************************************************************************** println("**********************************************************") println("属性演示") println("**********************************************************") println("Graph:"); //Degrees操作 println("找出图中最大的出度、入度、度数:") def max(a: (VertexId, Int), b: (VertexId, Int)): (VertexId, Int) = { if (a._2 > b._2) a else b } println("max of outDegrees:" + graph.outDegrees.reduce(max) + " max of inDegrees:" + graph.inDegrees.reduce(max) + " max of Degrees:" + graph.degrees.reduce(max)) println sc.stop } }
3.结果:
graph.numEdges:5105039 graph.numVertices:875713 edges 10: Edge(0,11342,1) Edge(0,824020,1) Edge(0,867923,1) Edge(0,891835,1) Edge(1,53051,1) Edge(1,203402,1) Edge(1,223236,1) Edge(1,276233,1) Edge(1,552600,1) Edge(1,569212,1) vertices 10: (266991,1) (651447,1) (182316,1) (846729,1) (627804,1) (831957,1) (512760,1) (307248,1) (449586,1) (857454,1) ********************************************************** 属性演示 ********************************************************** Graph: 找出图中最大的出度、入度、度数: max of outDegrees:(506742,456) max of inDegrees:(537039,6326) max of Degrees:(537039,6353)
参考
【1】 http://spark.apache.org/docs/1.5.2/graphx-programming-guide.html
【2】https://github.com/xubo245/SparkLearning
【3】 http://snap.stanford.edu/data/web-Google.html