Spark GraphX in Action 1.2

1.2 图:从关系中寻找意义

图数据可用于表示常见的相互有关系的数据,例如:

n 社交网络

n 移动电话系统

n 互联网

相比几十年来图计算一直局限于学术研究不同,近来硅谷的社交媒体公司与政府的情报机构都开始对他们的数据使用关系图谱分析。随着Facebook推出了他们的社交搜索工具GraphSearch,互联网上的六度空间理论。图现在已经成为了流行词汇。情报机构也公开呼吁需要将数据连起来。即使是现在普遍和无处不在的图标,在社交媒体和智能手机相机上分享的也是一个缩略“图”。

 

目前图最常见的用途之一是对社交媒体数据进行挖掘,特别是识别社群,推荐新的关系,以及推荐产品。这样的数据可以是非常大的--无法存储在单个机器上。这是Spark的作用:它可以将数据存储在一个集群内的多台机器上。

Spark适合处理图数据,还有另外一个原因:它(在计算过程中)将数据存储在集群中每台计算机的内存中,而Hadoop则将数据存储在集群中每台计算机的磁盘上。Hadoop适合处理数据的顺序访问,而Spark可以处理图数据所需的随机访问,(遍历从一个顶点到下一个顶点的图)。

GraphX不是数据库,它是一个图计算系统,可以提供Web联机查询服务或执行一次性,长期运行的独立计算。因为GraphX不是数据库,它不能像Neo4jTitan那样处理更新和删除操作。Apache Giraph是另一个图计算系统,但它只能用在Hadoop Map / Reduce框架上。GraphXGiraphGraphLab都是Google Pregel文章中算法的独立实现。它们可以大规模并行的方式在整个图上运行算法,而不是像传统图数据库那样处理小规模的图。以传统关系型数据库来类比,像Neo4j的图数据库主要适用于OLTP操作,而像GraphX的图计算系统适用于OLAP

图可以存储很多种类型的数据,例如:地理信息,社交网络关系,论文引用关系,网站引用关系等等。如下图1.5就是一个小型的社交网络关系。

 

1.2.1 图的用途

我们处在一个数据爆炸的年代,为了利用这些数据,大大小小的公司都将数据分析和数据挖掘作为其运营的核心。这一举动被称为数据驱动的业务模式。数据不仅越来越大,更越来越有相关性。这种相关性赋予了数据更多的意义,能让我们更好地理解周围的世界。而图计算提供了一种强大的方式来探索和使用这些富有相关性的数据。

这些相关的数据是什么样的形式呢?让我们来看看最著名的关系数据集--万维网。最简单的说法,万维网是由几十亿个网页,文字,图片,视频组成,每个页面都可以通过一个标签指向一个或者多个其他页面。

 

如图1.6所示。你可以把这些页面与链接看做一个图数据。然后,您可以使用图结构展现其中每个页面的相对重要性。您可以将上图视为每个页面为其指向的那个页面提供一次打分,但并非每个页面得分都相等;例如一个主要新闻网站上的一个网页比一个未知的博客作者的发布更重要。这就是由PageRank算法解决的问题。您将在第5章中看到它的详细解释,同时您还会看到图的其他多种多样的应用。

到目前为止,我们看到的图已经使用了页面之间的连接;有一个连接或没有连接。如果我们有更多关于连接的信息,我们可以使图的含义更丰富。典型的例子是评级信息。当您对Netflix上的电影给予5星评级时,不仅要在自己和电影之间创建连接,还要为该连接分配一个值。

图中的连接不仅仅可以用于电影评分,在金融欺诈中的金额,城市之间行驶的距离以及通过移动电话网络传输的流量都是用于增强图中的连接的例子。

即使图中数据点之间的连接没有可测量的值,仍然是可以有价值的。以社交媒体网站为例。每个个人资料都可能存储人们从哪儿去学校,这表示人与学校之间的连接。如果我们捕获了其他信息,例如他们什么时候上学,那就可以在图中表示一些这类附加信息。现在,当我们想向我们的用户推荐朋友时,我们可以确保当他们在83班时,不会向他们推荐96班的人。

图数据结构早在社交网络之前就存在。它的其他用途还包括:

l 寻找最短路径

l 推荐系统

l 将互联关系转换为层级关系

l 确定最权威的学术论文(通过引用关系)

1.2.2 图数据的种类

哪类数据可以用图来处理呢,惯常的答案“任何数据”没有实际意义。下图1.7列举了一些适用图来处理的数据。

l 网络图

l 树形数据

l 关系型数据库的数据

l 稀疏矩阵

l 任何数据

网络图可以是一个道路网络,如图1.7所示,一个社交网络,或一个计算机网络。树形数据需要是一个没有循环的树图。任何关系型数据库的数据都可以转换为图数据,但这有在需要应用一些图算法时才有用,如探测社群的PageRank算法或网络规划的最小生成树算法。

 

我们在第3章将讨论的,每个图都有一个对应的邻接矩阵。这个告诉我们:图形只是一个可替代的数据结构,而不是什么神奇的东西。一些算法,利用图结构对应的稀疏矩阵,可以更好的处理。在第7章中讨论的SVD ++是这种算法的一个例子。

还有人尝试去建立一个包含所有数据的图。Cyc项目就是一个尝试将所有人类知识编码到图形中的例子。YAGO项目有一个略微小一点的目标,编一个数据(包含字典,层次结构和关系),代表世界上的一切。有些人们认为这样一个宏伟的图数据会自然的带来人工智能,很可惜这不会发生,但这样的图数据对于一些自然语言处理项目的还是有帮助的。

1.2.3 传统关系型数据库不适用于图数据

如果你试图在关系型数据库或数组中存储一个图数据,同时你还不熟悉SQL,你很可能会用一个表(或数组)存储顶点,用另一个表存储边。存储边的表有一个指向顶点表的外键,这样可以使得每个边将指向连接中的两个顶点。这样存储没什么问题,只是你不能在图中进行深入查询。

在图1.5的示例图中,假设我们想知道谁能看到Charles的状态“今天早上去健身房”。如果Charles只与直接的朋友分享,那么在上述的表结构中找到谁能看到这个状态是很容易的。但假设Charles与朋友的朋友分享他的状态;那么就需要对这个表进行多次关联。用sql的术语来说,我们必须对边表进行自关联。如果我们想要实现六度空间理论的,我们必须在同一SQL查询中将边表自连接6次。

可以用图数据来建模的问题的共同点是,我们既关心实体本身也关心实体与实体之间的连接。在许多情况下,我们希望遍历连接以找到诸如社交网络中的朋友的朋友的朋友,Twitter上的转推关系,或一群故障计算机的公共组件。

此外,并不是所有的连接都是同等价值的。假设我们正在分析一个已知犯罪分子和他的许多同伙的关系数据。我们想要识别那些最有可能为我们提供信息的人,但是调查每个有某种联系的人是没有意义的;我们希望给连接加上权重来确定优先级。这个权重可以是每周进行联系的次数。图数据允许我们为每个连接分配一个值或权重,然后在后续处理中使用该权重。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值