GraphX创建图并可视化的核心技术
来源:互联网 发布:好身材 知乎 编辑:程序博客网 时间:2024/05/18 13:42
- 可视化效果
- 编程语言
- 核心代码
准备在CSDN上写一个关于GraphX的专栏,这是第一篇文章。
本文介绍使用GraphX创建一张图并可视化的关键技术,创建好的图存储在Graph[VD,ED]对象中,可视化所使用的技术框架是第三方Java动态图形管理组件GraphStream
。
可视化效果
在可视化结果中,使用标签分别在顶点和边的旁边标注了人物的姓名和人物之间的关系,如下图所示。
编程语言
GraphX目前只支持Scala编程语言。
核心代码
import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.graphx._import org.apache.spark.rdd.RDDimport org.graphstream.graph.{Graph => GraphStream}import org.graphstream.graph.implementations._/** * 显示原始图可视化对象 */object GraphStreamTest extends App{ /** * configuration of spark * Spark配置部分 */ val conf = new SparkConf().setAppName("GraphStreamTest") conf.setMaster("spark://MacdeMacBook-Pro-3.local:7077") val sc = new SparkContext(conf) sc.addJar("/Users/mac/Documents/GraphXSurvey/SparkTest/out/artifacts/SparkTest_jar3/SparkTest.jar") case class Person(name:String, sex:String) case class Link(relationship:String, happenDate:String) /** * create a graph from files which have specified form * * @param vertexFilePath file path of vertexs.csv * @param edgeFilePath file path of edges.csv * @return */ def createGraph(vertexFilePath:String, edgeFilePath:String): Graph[Person,Link] ={ //读取数据文件 val vertices = sc.textFile(vertexFilePath) val links= sc.textFile(edgeFilePath) //构建边、顶点RDD val verticesRDD: RDD[(VertexId,Person)] = vertices map {line => val row = line split ',' (row(0).toLong,Person(row(1),row(2))) } val linksRDD:RDD[Edge[Link]] = links map {line => val row = line split ',' Edge(row(0).toLong, row(1).toLong, Link(row(2), row(3))) } //构建图 val social: Graph[Person,Link] = Graph(verticesRDD, linksRDD) return social } /** * the main graph */ var graph:Graph[Person,Link] = createGraph("/Users/mac/Documents/GraphXSurvey/GraphX/SocialNetwork/vertexs.csv","/Users/mac/Documents/GraphXSurvey/GraphX/SocialNetwork/edges.csv") graph.cache() //创建原始可视化对象 val graphStream:SingleGraph = new SingleGraph("GraphStream") // 设置graphStream全局属性. Set up the visual attributes for graph visualization graphStream.addAttribute("ui.stylesheet","url(./style/stylesheet.css)") graphStream.addAttribute("ui.quality") graphStream.addAttribute("ui.antialias") // 加载顶点到可视化图对象中 for ((id,person:Person) <- graph.vertices.collect()) { val node = graphStream.addNode(id.toString).asInstanceOf[SingleNode] node.addAttribute("ui.label",id +"\n"+person.name) } //加载边到可视化图对象中 for (Edge(x,y,link:Link) <- graph.edges.collect()) { val edge = graphStream.addEdge(x.toString ++ y.toString, x.toString, y.toString, true). asInstanceOf[AbstractEdge] } //显示 graphStream.display()}
2 0
- GraphX创建图并可视化的核心技术
- Spark GraphX 对图进行可视化
- Spark GraphX 对图进行可视化
- spark graphx创建
- 【Visual Studio风格开发系列 - 可视化界面设计】利用 .NET Framework 2.0 创建并宿主自定义的设计(全部图)
- spark-graphx以及图的相关介绍
- 并行图计算: GraphX 的 pregel 接口
- Spark GraphX: 改变图的结构
- GraphX的基本介绍
- graphx与完全图
- graphx解决图中心
- spark构建图graphx
- Spark的GraphX中关于两图合并的算法
- 关于图计算和graphx的一些思考
- 淘宝明风:基于Graphx的图计算实践分享
- 淘宝明风:基于Graphx的图计算实践分享
- GraphX:基于Spark的弹性分布式图计算系统
- Spark GraphX进行图计算时的OOM问题
- (2.3.13)Comparable接口的实现和使用[ Collections.sort]
- Tomcat的 Document base ……does not exist or is not a readable directory错误
- 判断手机版本
- XPath与多线程爬虫
- xargs命令详解
- GraphX创建图并可视化的核心技术
- XML(5)序列化写入xml文件
- 《剑指offer》:[15]实现指数函数:x的y次方
- Android Http缓存数据处理
- 【Linux】Linux系统下进度条的模拟实现
- Android-menu
- Python内置函数chr() unichr() ord()
- 原来我一个对网络不熟的人,也可以通过网络盈利,神了
- 【C++学习笔记】