文档详情

spark大数据编程基础scala版第八章spark graphx.ppt

发布:2021-05-17约3.31万字共176页下载文档
文本预览下载声明
运行代码Demo.scala scalac Demo.scala //编译Scala文件命令 scala -classpath . HelloWorld //执行命令 运行代码Demo.scala scalac Demo.scala //编译Scala文件命令 scala -classpath . HelloWorld //执行命令 运行代码Demo.scala scalac Demo.scala //编译Scala文件命令 scala -classpath . HelloWorld //执行命令 运行代码Demo.scala scalac Demo.scala //编译Scala文件命令 scala -classpath . HelloWorld //执行命令 运行代码Demo.scala scalac Demo.scala //编译Scala文件命令 scala -classpath . HelloWorld //执行命令 运行代码Demo.scala scalac Demo.scala //编译Scala文件命令 scala -classpath . HelloWorld //执行命令 * * * * * * * * * * * * * * * * * 8.5.3 最小生成树问题 续代码8-24 8.5.3 最小生成树问题 运行结果: (4,(D,5.0,1)) | (1,(A,0.0,-1)) | (5,(E,7.0,2)) | (6,(F,6.0,4)) | (2,(B,7.0,1)) | (3,(C,5.0,5)) | (7,(G,9.0,5)) 结果说明:结果显示的是依次添加的边集无先后顺序且无方向,如第一项(4,(D,5.0,1))表示为顶点ID为4的顶点和顶点ID为1 的顶点相连,它们边的属性为5.0,第二项(1,(A,0.0,-1))中-1表示A不与其他节点相连。 8.6 GraphX实例分析 本节通过两个实例来展示GraphX的具体应用场景。包括寻找“最有影响力”论文和寻找社交媒体中的“影响力用户”。 8.6.1 寻找“最有影响力”论文 首先准备要用到的数据,本实例选用高能物理理论应用网络数据集,具体下载界面地址为:/data/cit-HepTh.html。下载完成并解压后即可放到相应的目录。 本书中将Cit-HepTh.txt文件放在Idea对应的project中,Cit-HepTh.txt文件格式如图8-18所示。 8.6.1 寻找“最有影响力”论文 图8-18 Cit-HepTh.txt文件格式 8.6.1 寻找“最有影响力”论文 每一行数据表示图中的一条边,每一条边有源顶点ID和目标顶点ID,每个ID对应一篇论文。源顶点表示比较新的论文,目标顶点表示被引用的旧的论文,论文的引用关系用边来表示,即新论文引用旧论文。如代码8-25所示。 8.6.1 寻找“最有影响力”论文 代码8-25 scala import org.apache.spark.graphx._ //导入GraphX包 //文件路径根据存放位置而定 scala val graph=GraphLoader.edgeListFile(sc, /home/ubuntu/Cit-HepTh.txt) scala graph.inDegrees.reduce((a,b)=if(a._2b._2) a else b) res15: (org.apache.spark.graphx.VertexId, Int) = (9711200,2414) GraphLoader是GraphX类库里面的对象,通过import将其导入,然后通过函数edgeListFile加载边列表格式的文件。edgeListFile有两个参数,第一个是SparkContext参数sc,sc由spark-shell在初始化的时候创建,第二个参数是边列表文件的路径名称。 8.6.1 寻找“最有影响力”论文 变量graph通过调用inDegrees函数可得到(顶点ID,入度)的VertexRDD,此RDD提供一个reduce()函数,此函数只有一个参数,该参数本身就是一个匿名函数,引用此函数就可以把RDD的两条数据归并成一个结果,归并的原则就是选取入度大的顶点。结论所示:ID为9711200的论文被其他论文引用2414次,引用次数最多。 8.6.1 寻找“最有影响力”论文 接下来,运用graph变量的pageRank()函数返回一个新的Graph,其中每个点有Double类型的属性值(原始的图edgeListFile给顶点属性赋予一个默认值1),参数0.001是
显示全部
相似文档