博客
关于我
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/

    你可能感兴趣的文章
    Paramiko exec_命令的实时输出
    查看>>
    Spring security之管理session
    查看>>
    paramiko模块
    查看>>
    param[:]=param-lr*param.grad/batch_size的理解
    查看>>
    spring mvc excludePathPatterns失效 如何解决spring拦截器失效 excludePathPatterns忽略失效 拦截器失效 spring免验证拦截器不起作用
    查看>>
    Spring Cloud 之注册中心 EurekaServerAutoConfiguration源码分析
    查看>>
    Parrot OS 6.2 重磅发布!推出全新 Docker 容器启动器
    查看>>
    Parrot OS 6.3 发布!全面提升安全性,新增先进工具,带来更高性能
    查看>>
    ParseChat应用源码ios版
    查看>>
    Part 2异常和错误
    查看>>
    Pascal Script
    查看>>
    Spring Boot集成Redis实现keyspace监听 | Spring Cloud 34
    查看>>
    Spring Boot中的自定义事件详解与实战
    查看>>
    Passport 密码模式
    查看>>
    Spring Boot(七十六):集成Redisson实现布隆过滤器(Bloom Filter)
    查看>>
    passport 简易搭配
    查看>>
    passwd命令限制用户密码到期时间
    查看>>
    Spring Boot 动态加载jar包,动态配置太强了!
    查看>>
    Spring @Async执行异步方法的简单使用
    查看>>
    PAT (Basic Level) Practice 乙级1021-1030
    查看>>