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

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 使用OpenCV轮廓检测提取图像前景
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用PyTorch进行小样本学习的图像分类
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 使用单相机对已知物体进行3D位置估计
    查看>>
    OpenCV与AI深度学习 | 初学者指南 -- 什么是迁移学习?
    查看>>
    OpenCV与AI深度学习 | 十分钟掌握Pytorch搭建神经网络的流程
    查看>>
    OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV实现模糊检测 / 自动对焦
    查看>>
    OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
    查看>>
    OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8实现高级目标检测和区域计数
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于YoloV8的药丸/片剂类型识别
    查看>>