基于spark Graph X的图形数据分析
-
理解Spark Graph X数据模型
-
理解SparkGraphX API
-
理解Spark Graph X 图算法
PageRank
理解Spark Graph X Prege
许多大数据以大规模图或网络的形式呈现的
许多非图结构的大数据
Neo4j 专门用于图形数据库
列数据库是按照列来存储数据,行式数据库式按照几张表来存储数据的,图形式按照网状来存取的(就是找关系的 )。
用键值队或文档形式存放数据的:mongodb redis Cassandra等等的数据库。
引例:百度地图,搜索就是根据你的权重区搜索相应的数据信息。(权重可以有多个)
图(Graph)的基本概念
- 图室友顶点集合(顶点 vertex)及顶点间的概念西集合(边edge)组成的一种网状数据结构
- 通常表示为二元组:Gragh = (V,E)
- 可以对事务之间的关系建模(就是事务之间的关系网)
应用场景
- 在地图引用中找关系(最短路径,最经济路径等等)
- 社交关系网(人脉关系网)
Graph=(V,E)
集合V={v1,v2,v3} //顶点
集合E={(v1,v2),(v1,v3),(v2,v3)} //边
//有向图---所有点到点的距离
D={V,E}
V={A,B,C,D,E}
E={<A,B>,<B,C>,<B,D>,<D,A>,<D,E>}
//无向图
G={V,E}
V={A,B,C,D,E}
E={(A,B),(A,D),(B,C),(B,D),(C,E),(D,E)}
//有环图
包含一些列顶点连接的回路(环路)
//无环图
DAG即为有向无环图
//解释专业术语
度:一个顶点所有边的数量
出度:指从当前顶点指向其他顶点的边的数量(这个点有多少进)
入度:其他顶点指向当前顶点的边的数量(这个点有多少出)
邻接矩阵
自己和自己连线用2表示,其他的都是按照左面图与之对应。
//演示:创建Graph
//先创建一个类
class Graph[VD,ED]{
//顶点集合算子
val vertices:VertexRDD[VD]
//边集合算子
val edges:EdgeRDD[ED]
//图形集合算子
val triplets:RDD[EdgeTriplet[VD,ED]]
}
//先要导包
import org.apache.spark.graphx._
val vertices:RDD[(Vertexld,Int) = sc.makeRDD