Spark GraphX图计算入门

本文介绍了图计算的概念、图的基本结构和图计算的应用。重点讲解了Spark的图计算库GraphX,包括其简介、实现原理、数据结构和常用API。此外,还通过PageRank案例展示了GraphX的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.什么是图计算

图计算,可以简单理解为以图这种数据结构为基础,整合相关算法来实现对应应用的计算模型。社交网络中人与人之间的关系,如果用计算机数据结构表示,最合适的就是图了。其中图的顶点表示社交中的人,边表示人与人之间的关系。所以要做社交网络分析,先要了解图计算,这是整个分析的基础。也正如此,Spark的图计算库叫GraphX。

二.图的基本概念

图是基础的数据结构,和链表、树不同,它是一种非线性数据结构。其基本结构很简单,如下图:
在这里插入图片描述
一个图由定点集V和定点间的关系集合E组成,可以用二元组定义为G=(V,E)。图中各数据元素之间的关系可以是任意的,且它描述的是多对多的关系。
例如,上图中定点的基础就表示为:
在这里插入图片描述
边的集合则表示为:
在这里插入图片描述
这是一个有向图。边有方向,(v1,v2)和(v2,v1)表示不同的两条边。若边无方向,则是无向图。
基于图的数据结构衍生出了很多基础算法,例如遍历、最小生成树、最短路径等。比如,著名的Prim算法和Kruskal算法,就是计算最小生成树。
业界也有很多开源的图计算库,常见的如Python的NetworkX、Spark的GraphX等。这些库基本都提供3类API接口,如下:

  • 图生成。将文本、日志等数据转换为图的数据结构。
  • 访问图数据。查询顶点数、边数;计算某个顶点的出度和入度等。
  • 图算法。遍历节点和边、计算图的连通性、计算最大子图、图的合并等基本算法。

三.图计算的应用

基于图的结构有很多应用场景,比如淘宝的商品推荐、腾讯的好友推荐,再比如一些网络路由算法、SNA、Language Modeling等也都会用到图计算。
图的计算量一般都比较大,而且通常会有多次迭代。比如,若简单地计算顶点出入度,时间复杂度就是O(n * m)。想腾讯这种公司的数据级别,基本是不可完成的任务。如果能将算法并行化,利用机器数量弥补速度,这将是件美好的事情。

四.Spark GraphX简介

为了提高图计算的速度,很多企业、社区都提供了并行的图计算解决方案,常见的有Pregel、PowerGraph、Graphlib等。当然,Spark的GraphX是其中的新秀和佼佼者。它依托Spark的强大计算能力,提供了图计算需要的便捷API,同时兼具并行计算的性能,是做大规模图计算的一把利器。

五.GraphX实现

总所周知,Spark抽象了一个通用的数据结构RDD来代表运算中需要的各种数据类型。GraphX的核心数据结构则是GraphX,这是一种携带每个点属性和边属性的有向多重图。所谓多重图,就是一对源、目的节点之间允许存在多条边,以便表示不同的关系【如既是同学,又是同事】。下面是GraphX的定义:

/**
 1. The Graph abstractly represents a graph with arbitrary objects
 2. associated with vertices and edges.  The graph provides basic
 3. operations to access and manipulate the data associated with
 4. vertices and edges as well as the underlying structure.  Like Spark
 5. RDDs, the graph is a functional data-structure in which mutating
 6. operations return new graphs.
 7.  8. @note [[GraphOps]] contains additional convenience operations and graph algorithms.
 9.  10. @tparam VD the vertex attribute type
 11. @tparam ED the edge attribute type
 */
abstract class Graph[VD: ClassTag, ED: ClassTag] protected () extends Serializable {
   
   

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值