本文共 1523 字,大约阅读时间需要 5 分钟。
图是一种由顶点集合和顶点间的关系集合(边)组成的网状数据结构,通常表示为二元组G=(V, E),其中V表示顶点,E表示边。图非常适合建模事物之间的关系,并能很好地表达数据之间的关联性。
图的应用场景包括:
GraphX采用弹性分布式属性图作为核心抽象,支持有向多重图,带有连接到每个顶点和边的用户定义的对象。弹性分布式图计算类似于分布式数据计算,但通过顶点分割来实现并发目标。每个顶点使用唯一的64位长的VertexID作为标识,GraphX对顶点标识没有强加排序要求。
Graph[VD, ED]类定义了图的核心属性:
class Graph[VD, ED] { val vertices: VertexRDD[VD] val edges: EdgeRDD[ED] val triplets: RDD[EdgeTriplet[VD, ED]] } 其中:
GraphX采用Vertex-Cut存储模式,使用以下三个表:
常用图信息算子包括:
graph.numVerticesgraph.numEdgesgraph.inDegrees、graph.outDegreesgraph.degreesGraphX支持丰富的图操作:
mapVertices、joinVerticesmapEdges、groupEdgesreversesubgraphjoinVertices、outerJoinVertices以下案例展示了GraphX的核心功能:
连通分量是一个子图,其中任何两个顶点通过边或边序列相互连接。连通分量的顶点是原始图顶点集的子集,边是原始图边集的子集。
以下案例展示了如何计算连通分量:
connectedComponents方法计算连通分量。Pregel是一种面向图算法的分布式编程框架,采用迭代计算模型,通过消息传递进行并行计算。每一轮顶点接收消息,更新自身状态,并向邻居发送消息。
Pregel框架可以用于PageRank算法,评估网页重要性。顶点接收消息计算PR值,向邻居发送消息更新其PR值。
以下案例展示了Pregel框架的应用:
通过以上内容,可以全面了解GraphX框架的核心功能和应用场景。
转载地址:http://pwqb.baihongyu.com/