博客
关于我
Spark Graph基础
阅读量:178 次
发布时间:2019-02-27

本文共 1523 字,大约阅读时间需要 5 分钟。

GraphX框架技术文档

图(Graph)的基本概念

1.1 图的概念

图是一种由顶点集合和顶点间的关系集合(边)组成的网状数据结构,通常表示为二元组G=(V, E),其中V表示顶点,E表示边。图非常适合建模事物之间的关系,并能很好地表达数据之间的关联性。

1.2 应用场景

图的应用场景包括:

  • 地图应用中寻找最短路径
  • 社交网络关系建模
  • 网页间超链接关系

1.3 弹性分布式属性图

GraphX采用弹性分布式属性图作为核心抽象,支持有向多重图,带有连接到每个顶点和边的用户定义的对象。弹性分布式图计算类似于分布式数据计算,但通过顶点分割来实现并发目标。每个顶点使用唯一的64位长的VertexID作为标识,GraphX对顶点标识没有强加排序要求。

图的构建

2.1 图的基本属性

Graph[VD, ED]类定义了图的核心属性:

class Graph[VD, ED] {   val vertices: VertexRDD[VD]   val edges: EdgeRDD[ED]   val triplets: RDD[EdgeTriplet[VD, ED]] }

其中:

  • VertexRDD[VD]存储顶点数据,包含顶点ID和顶点属性。
  • EdgeRDD[ED]存储边数据,包含源顶点ID、目标顶点ID和边属性。
  • EdgeTriplet[VD, ED]是一个三元组视图,包含源顶点属性、边属性和目标顶点属性。

2.2 GraphX的图存储模式

GraphX采用Vertex-Cut存储模式,使用以下三个表:

  • VertexTable(id, data):存储顶点ID和顶点属性。
  • EdgeTable(pid, src, dst, data):存储分区ID、源顶点ID、目标顶点ID和边属性。
  • RoutingTable(id, pid):存储顶点ID和分区ID。
  • 2.3 图信息算子

    常用图信息算子包括:

    • 查看顶点数量:graph.numVertices
    • 查看边数量:graph.numEdges
    • 查看入度和出度:graph.inDegrees、graph.outDegrees
    • 查看顶点度数:graph.degrees

    2.4 图操作

    GraphX支持丰富的图操作:

    • 顶点操作:mapVertices、joinVertices
    • 边操作:mapEdges、groupEdges
    • 图反转:reverse
    • 子图构造:subgraph
    • 连接操作:joinVertices、outerJoinVertices

    2.5 案例

    以下案例展示了GraphX的核心功能:

    • 打印图的顶点和边信息。
    • 计算用户粉丝数量。
    • 找出社交网络中最重要的用户。
    • PageRank算法应用。

    连通分量

    3.1 连通分量概念

    连通分量是一个子图,其中任何两个顶点通过边或边序列相互连接。连通分量的顶点是原始图顶点集的子集,边是原始图边集的子集。

    3.2 案例

    以下案例展示了如何计算连通分量:

    • 使用connectedComponents方法计算连通分量。
    • 打印连通分量的顶点和边信息。

    Pregel框架

    4.1 Pregel框架概述

    Pregel是一种面向图算法的分布式编程框架,采用迭代计算模型,通过消息传递进行并行计算。每一轮顶点接收消息,更新自身状态,并向邻居发送消息。

    4.2 PageRank应用

    Pregel框架可以用于PageRank算法,评估网页重要性。顶点接收消息计算PR值,向邻居发送消息更新其PR值。

    4.3 案例

    以下案例展示了Pregel框架的应用:

    • 计算图中的最小值。
    • 单源最短路径计算。

    通过以上内容,可以全面了解GraphX框架的核心功能和应用场景。

    转载地址:http://pwqb.baihongyu.com/

    你可能感兴趣的文章
    Python 中的线程
    查看>>
    Python 中的继承机制是什么样的?
    查看>>
    Python 中的装饰器是什么?
    查看>>
    Python 中的装饰器是如何工作的,有哪些实际应用场景?
    查看>>
    python读excel
    查看>>
    Python 中读取 CSV 文件-ChatGPT4o作答
    查看>>
    python请求html_使用Python请求获取HTML?
    查看>>
    Python 之匿名函数和偏函数
    查看>>
    python 之栈的实现
    查看>>
    python语音播放
    查看>>
    python语言:装饰器原理
    查看>>
    Python 交互式数据可视化详解
    查看>>
    python语言有哪些优点和缺点_Python有哪些优缺点,你了解吗?
    查看>>
    Python 从入门到精通:30天速成教程到底有多狠?你能坚持下来吗?
    查看>>
    Python 从数据库中存储和检索密码的最安全方法
    查看>>
    Python语言及其应用 - 知识点遍历
    查看>>
    Python 优化提速的 8 个小技巧
    查看>>
    Python 余弦相似度与皮尔逊相关系数 计算
    查看>>
    python 使用execjs 报编码错误解决办法,UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 145: il
    查看>>
    python 使用filetype校验文件
    查看>>