图的基本概念以及Spark Graphx基本概念
一.图基本概念,术语以及表示方法
1.为什么需要图计算
- 许多大数据以大规模图或网络的形式呈现
- 许多非图结构的大数据,常会被转换为图模型进行分析
- 图数据结构很好地表达了数据之间的关联性
2.图(Graph)的基本概念
(1)图是由顶点集合(vertex)及顶点间的关系集合(边edge)组成的一种网状数据结构
- 通常表示为二元组:Gragh=(V,E)
- 以对事物之间的关系建模
(2)应用场景
- 在地图应用中寻找最短路径
- 社交网络关系
- 网页间超链接关系
3.图的术语
(1)顶点(Vertex)
(2)边(Edge)
Graph=(V,E)
集合V={v1,v2,v3}
集合E={(v1,v2),(v1,v3),(v2,v3)}
(3)有向图
G=(V,E)
V={A,B,C,D,E}
E={<A,B>,<B,C>,<B,D>,<C,E>,<D,A>,<E,D>}
(4)无向图
G=(V,E)
V={A,B,C,D,E}
E={(A,B),(A,D),(B,C),(B,D),(C,E),(D,E)}
(5)有环图
包含一系列顶点连接的回路(环路)
(6)无环图
DAG即为有向无环图
(7)度
一个顶点所有边的数量
(8)出度
指从当前顶点指向其他顶点的边的数量
(9)入度
其他顶点指向当前顶点的边的数量
示例:顶点11的度是5,入度是2,出度是3
4.图的经典表示法(邻接矩阵)
注:
- 对于每条边,矩阵中相应单元格值为1
- 对于每个循环,矩阵中相应单元格值为2,方便在行或列上求得顶点度数
二.Spark Graphx
1.Spark GraphX 简介
(1)Graphx是什么?
GraphX是Spark提供分布式图计算API
(2)Graphx特点
- 基于内存实现了数据的复用与快速读取
- 通过弹性分布式属性图(Property Graph)统一了图视图与表视图
- 与Spark Streaming、Spark SQL和Spark MLlib等无缝衔接
2.GraphX核心抽象
弹性分布式属性图(Resilient Distributed Property Graph)
-
顶点和边都带属性的有向多重图
-
一份物理存储,两种视图
对Graph视图的所有操作,最终都会转换成其关联的Table视图的RDD操作来完成