博客
关于我
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.inDegreesgraph.outDegrees
    • 查看顶点度数:graph.degrees

    2.4 图操作

    GraphX支持丰富的图操作:

    • 顶点操作:mapVerticesjoinVertices
    • 边操作:mapEdgesgroupEdges
    • 图反转:reverse
    • 子图构造:subgraph
    • 连接操作:joinVerticesouterJoinVertices

    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/

    你可能感兴趣的文章
    PostgreSQL清空表并保留表结构、清空数据库还原数据库为新建时的状态的方法
    查看>>
    PostgreSQL的 initdb 源代码分析之九
    查看>>
    PostgreSQL的安装与使用指南
    查看>>
    postgresql编译安装及配置
    查看>>
    PostgreSQL远程连接配置
    查看>>
    PostgreSQL配置文件--其他
    查看>>
    Postman 内置的动态变量
    查看>>
    Qt开发——QProgressBar/QProgressDialog进度条
    查看>>
    Postman 汉化(Postman中文版)
    查看>>
    Postman+Newman+Git+Jenkins实现接口自动化测试持续集成
    查看>>
    Qt布局管理详解(5种布局控件)
    查看>>
    Qt工程转化为Vs工程
    查看>>
    postman之参数化详解
    查看>>
    QT实现TCPServer连接多个客户端(附完整源码)
    查看>>
    Postman做接口测试:如何自动校验接口响应
    查看>>
    postman做接口自动化测试
    查看>>
    Postman入门到入土
    查看>>
    Postman入门到精通01
    查看>>
    postman入门基础 —— 接口测试流程
    查看>>
    Postman如何做接口测试:如何导入 swagger 接口文档
    查看>>