《Spark大数据编程基础(Scala版)》第八章-Spark-GraphX.ppt

《Spark大数据编程基础(Scala版)》第八章-Spark-GraphX.ppt

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

8.4.2计算三角形数通过计算三角形数可以衡量图或者子图的连通性,例如:在一个社交网络中,如果每个人都影响其他人(每个人都连接到其他人),这样就会产生大量的三角形关系,也称为社区发现。GraphX在对三角形计数时,会把图当作无向图。图或者子图有越多的三角形则连通性越好,这个性质可以确定小圈子,也可以用于提供推荐等。8.4.2计算三角形数TriangleCount的算法思想如下:计算每个节点的邻节点。统计对每条边计算交集,并找出交集中id大于前两个节点id的节点。对每个节点统计Triangle总数,注意只统计符合计算方向的TriangleCount。接着通过一个社区网站用户之间关联情况的实例介绍TriangleCount的用法。followers.txt中为用户之间的关联情况,需要注意的是这些关联形成的图是有向的,字段之间用空格隔开。8.4.2计算三角形数用户followers.txt文档内容如图8-11所示。图8?11followers.txt文档8.4.2计算三角形数users.txt中为社交网站的用户,该用户数据有三个字段,分别为序号,用户昵称,用户真实姓名,字段之间用逗号隔开。users.txt文档内容如图8?12所示。图8?12users.txt文档8.4.2计算三角形数本实例的具体的程序以及注释如代码8?18所示。代码8-18scalaimportorg.apache.spark.graphx.{GraphLoader,PartitionStrategy}importorg.apache.spark.graphx.{GraphLoader,PartitionStrategy}scalavalgraph=GraphLoader.edgeListFile(sc,/usr/local/spark-2.3.0-bin-hadoop2.7/data/graphx/followers.txt,true).partitionBy(PartitionStrategy.RandomVertexCut)graph:org.apache.spark.graphx.Graph[Int,Int]=org.apache.spark.graphx.impl.GraphImpl@428169dscalavaltriCounts=graph.triangleCount().vertices//对每个顶点计算三角形数triCounts:org.apache.spark.graphx.VertexRDD[Int]=VertexRDDImpl[128]atRDDatVertexRDD.scala:578.4.2计算三角形数续代码8-18//将三角形数和用户名相联系scalavalusers=sc.textFile(/usr/local/spark-2.3.0-bin-hadoop2.7/data/graphx/users.txt).map{line=valfields=line.split(,)(fields(0).toLong,fields(1))}users:org.apache.spark.rdd.RDD[(Long,String)]=MapPartitionsRDD[133]atmapatconsole:27scalavaltriCountByUsername=users.join(triCounts).map{case(id,(username,tc))=(username,tc)}triCountByUsername:org.apache.spark.rdd.RDD[(String,Int)]=MapPartitionsRDD[137]atmapatconsole:308.4.2计算三角形数续代码8-18//输出结果scalaprintln(triCountByUsername.collect().mkString(\n))(justinbieber,0)(BarackObama,0)(matei_zaharia,1)(jeresig,1)(odersky,1)(ladygaga,0)8.4.2计算三角形数结果可由followers.txt和users.txt文档内容所构建的图8?13看出,只有matei_zaharia、jeresig和odersky组成了三角形。图8?13三角形数示例图8.4

文档评论(0)

祝秀珍 + 关注
实名认证
内容提供者

好文档 大家想

1亿VIP精品文档

相关文档