SparkGraphX属性图.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SparkGraphX属性图

Spark GraphX属性图 Spark GraphX属性图 属性图是⼀个有向多重图,它带有连接到每个顶点和边的⽤户定义的对象。有向多重 图中多个并 (parallel)的边共享相同的源和⽬的地顶点。⽀持并 边的能⼒简化了建 模场景,这个场景中,相同的顶点存在多种关系(例如co-worker和friend)。每个顶点由 ⼀个唯⼀的64位长的标识符 (VertexID)作为key。GraphX并没有对顶点标识强加任 何排序。同样,顶点拥有相应的源和⽬的顶点标识符。 属性图通过vertex(VD)和edge(ED)类型参数化,这些类型是分别与每个顶点和边相关 联的对象的类型。 在某些情况下,在相同的图形中,可能希望顶点拥有不同的属性类型。这可以通过继 承完成。例如,将⽤户和产品建模成⼀个⼆分图,我们可以⽤如下⽅式 class VertexProperty() case class UserProperty(val name: String) extends VertexProperty case class ProductProperty(val name: String, val price: Double) e // T e grap mig t t en ave t e type: var grap : Grap [VertexProperty, String] = null 和RDD⼀样,属性图是不可变的、分布式的、容错的。图的值或者结构的改变需要按 期望的⽣成⼀个新的图来实现。注意,原始图的⼤部分都可以在新图中重⽤,⽤来减 少这种固有的功能数据结构的成本。执 者使⽤⼀系列顶点分区试探法来对图进 分 区。如RDD⼀样,图中的每个分区可以在发⽣故障的情况下被重新创建在不同的机器 上。 逻辑上的属性图对应于⼀对类型化的集合(RDD) 这个集合编码了每⼀个顶点和边的属 性。因此,图类包含访问图中顶点和边的成员。 class Grap [VD, ED] { val vertices: VertexRDD[VD] val edges: EdgeRDD[ED] } VertexRDD[VD]和EdgeRDD[ED]类分别继承和优化⾃RDD[(VertexID, VD)]和 RDD[Edge[ED]]。VertexRDD[VD]和EdgeRDD[ED]都⽀持额外的功能来建⽴在图 计算和利⽤内部优化。 属性图的例⼦ 在GraphX项⽬中,假设我们想构造⼀个包括不同合作者的属性图。顶点属性可能包含 ⽤户名和职业。我们可以⽤描述合作者之间关系的字符串标注边缘。 所得的图形将具有类型签名 val userGrap : Grap [(String, String), String] 有很多⽅式从⼀个原始⽂件、RDD构造⼀个属性图。最⼀般的⽅法是利⽤Graph object。下⾯的代码从RDD集合⽣成属性图。 // Assume t e SparkContext as already been constructed val sc: SparkContext // Create an RDD for t e vertices val users: RDD[(VertexId, (String, String))] = sc.parallelize(Array((3L, (rxin, student)), (7L, (jgonzal (5L, (franklin, prof)), (2L, (istoica // Create an RDD for edges val relations ips: RDD[Edge[String]] = sc.parallelize(Array(Edge(3L, 7L, collab), Edge(5L, 3L, Edge(2L, 5L, colleague), Edge(5L, 7L, // Define a default user in case t ere are relations ip wit missi val defaultUser = (Jo n Doe, Missing) // Build t e initial Grap val grap = Grap (users, relations ips, defaultUser) 在上⾯的例⼦中,我们⽤到了Edge样本类。边有

文档评论(0)

liangyuehong + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档