图计算
图计算的核心思想:
-
将数据表达成“点”,点和点之间可以通过某种业务含义建立“边”
-
然后,我们就可以从点、边上找出各种类型的数据关系:比如连通性;比如最短路径规划。
图计算基本概念
1.什么是图
图是由顶点和边组成的一个数据模型。
图可以对事物以及事物之间的关系建模,图可以用来表示自然发生的连接数据,如:
a)社交网络
b)互联网web页面
c)常用的应用有:
d)在地图应用中找到最短路径
e)基于与他人的相似度图,推荐产品、服务、人际关系或媒体
2. 图的构造
图是由若干顶点和边构成的;
Spark GraphX里面的图也是一样的,所以在初始图之前,先要定义若干的顶点和边:
// 顶点
val vertexArray = Array(
(1L,("Alice", 38)),
(2L,("Henry", 27)),
(3L,("Charlie", 55)),
(4L,("Peter", 32)),
(5L,("Mike", 35)),
(6L,("Kate", 23))
)
// 边
val edgeArray = Array(
Edge(2L, 1L, 5),
Edge(2L, 4L, 2),
Edge(3L, 2L, 7),
Edge(3L, 6L, 3),
Edge(4L, 1L, 1),
Edge(5L, 2L, 3),
Edge(5L, 3L, 8),
Edge(5L, 6L, 8)
)
然后再利用点和边生成各自的RDD:
//构造vertexRDD和edgeRDD
val vertexRDD:RDD[(Long,(String,Int))] = sc.parallelize(vertexArray)
val edgeRDD:RDD[Edge[Int]] = sc.parallelize(edgeArray)
最后利用两个RDD生成图:
// 构造图
val graph:Graph[(String,Int),Int] = Graph(vertexRDD, edgeRDD)
3. 图的属性操作
S