graphx操作实例08-connectedComponents
来源:互联网 发布:python post 下载文件 编辑:程序博客网 时间:2024/05/18 01:24
利用connectedComponents求图中的连通图
<span style="font-size:14px;">import org.apache.spark._import org.apache.spark.SparkContextimport org.apache.spark.SparkContext._import org.apache.spark.graphx._import org.apache.spark.rdd.RDDimport scala.reflect.ClassTagobject Day11 { def main(args: Array[String]) = { val conf = new SparkConf() val sc = new SparkContext("local", "test", conf) // day11.tsv // 1 2 // 2 3 // 3 1 // 4 5 // 5 6 // 6 7 val graph = GraphLoader.edgeListFile(sc, "graphdata/day11.tsv").cache() println("\n\n~~~~~~~~~ Confirm Vertices Internal of graph ") graph.vertices.collect.foreach(println(_)) // (4,1) // (6,1) // (2,1) // (1,1) // (3,1) // (7,1) // (5,1) println("\n\n~~~~~~~~~ Confirm Edges Internal of graph ") graph.edges.collect.foreach(println(_)) // Edge(1,2,1) // Edge(2,3,1) // Edge(3,1,1) // Edge(4,5,1) // Edge(5,6,1) // Edge(6,7,1) // 1,2,3相连,4,5,6,7相连 // 取连通图,连通图以图中最小Id作为label给图中顶点打属性 val cc:Graph[Long, Int] = graph.connectedComponents println("\n\n~~~~~~~~~ Confirm Vertices Connected Components ") cc.vertices.collect.foreach(println(_)) // (4,4) // (6,4) // (2,1) // (1,1) // (3,1) // (7,4) // (5,4) // 取出id为2的顶点的label val cc_label_of_vid_2:Long = cc.vertices.filter{case (id, label) => id == 2}.first._2 println("\n\n~~~~~~~~~ Confirm Connected Components Label of Vertex id 2") println(cc_label_of_vid_2) // 1 // 取出相同类标的顶点 val vertices_connected_with_vid_2:RDD[(Long, Long)] = cc.vertices.filter{case (id, label) => label == cc_label_of_vid_2} println("\n\n~~~~~~~~~ Confirm vertices_connected_with_vid_2") vertices_connected_with_vid_2.collect.foreach(println(_)) // (2,1) // (1,1) // (3,1) val vids_connected_with_vid_2:RDD[Long] = vertices_connected_with_vid_2.map(v => v._1) println("\n\n~~~~~~~~~ Confirm vids_connected_with_vid_2") vids_connected_with_vid_2.collect.foreach(println(_)) // 2 // 1 // 3 val vids_list:Array[Long] = vids_connected_with_vid_2.collect // 取出子图 val graph_include_vid_2 = graph.subgraph(vpred = (vid, attr) => vids_list.contains(vid)) println("\n\n~~~~~~~~~ Confirm graph_include_vid_2 ") graph_include_vid_2.vertices.collect.foreach(println(_)) // (2,1) // (1,1) // (3,1) sc.stop }}</span>
1 0
- graphx操作实例08-connectedComponents
- graphx操作实例08-connectedComponents
- Spark组件之GraphX学习13--ConnectedComponents操作
- graphx操作实例02-joinVertices
- graphx操作实例01-edgeListFile导入数据
- graphx操作实例06-subgraph和groupEdges
- graphx操作实例07-degrees和neighbors
- graphx操作实例09-Pregel学习
- graphx操作实例03-导入顶点和边生成图
- graphx操作实例04-使用mapReduceTriplets、mapEdges、mapVertices修改属性
- graphx操作实例05-VertexRDD和EdgeRDD属性测试
- GraphX Pregel实例实现
- Spark GraphX 入门实例完整scala代码
- Spark图计算GraphX介绍及实例
- Spark图计算GraphX介绍及实例
- Spark图计算GraphX介绍及实例
- Spark GraphX 入门实例完整Scala代码
- Spark图计算GraphX介绍及实例
- 1、一日一程序之C语言的Hanoi问题
- 使用NSTimer做匀速动画和变速动画
- Java多线程总结之线程安全队列Queue
- C语音 进制
- 内核文件权限值 S_IRUGO=S_IRUSR | S_IRGRP | S_IROTH
- graphx操作实例08-connectedComponents
- 第四周 习题
- Linux内核启动流程笔记
- php多张图片上传
- 韩顺平java sql server语句的使用
- HBase概述
- c++11线程sleep
- twisted的异步库汇总-- mysql,redis,mongo,zmq,sockjs等
- Xshell连接CentOS问题分析