前言

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系


关联

Spark RDD 论文详解(三)Spark 编程接口

正文

简介

GraphX 提供了静态和动态 PageRank 的实现方法,这些方法在 PageRank 对象中。

静态的 PageRank 运行固定次数的迭代,而动态的 PageRank 一直运行直到收敛为止。

数据

GraphX 源码中提供了一个运用 PageRank 算法分析社交网络中各用户重要性的案例。

社交网络中的用户数据在 data/graphx/users.txt 中,用户之间关系数据在 data/graphx/followers.txt 中。

users . txt 内容如下:

1,BarackObama,Barack Obama
2,ladygaga,Goddess of Love
3,jeresig,John Resig
4,justinbieber,Justin Bieber
6,matei_zaharia,Matei Zaharia
7,odersky,Martin Odersky
8,anonsys

followers.txt 内容如下

2 1
4 1
1 2
6 3
7 3
7 6
6 7
3 7

首先以 users.txt 中的用户作为顶点、 followers.txt 中的关系作为边集创建图

然后通过图直接调用 PageRank 算法计算出每个顶点的 PR 值,即用户的重要性

最后结合用户的属性信息对结果输出展示。

代码

package com.shockang.study.spark.graphximport org.apache.log4j.{Level, Logger}
import org.apache.spark.graphx.GraphLoader
import org.apache.spark.sql.SparkSession/*** 基于社交网络数据集的 PageRank 示例*/
object PageRankExample {val FOLLOWERS_PATH = "/Users/shockang/code/spark-examples/data/simple/graphx/followers.txt"val USERS_PATH = "/Users/shockang/code/spark-examples/data/simple/graphx/users.txt"def main(args: Array[String]): Unit = {// 关闭 Spark 内部的日志打印,只关注结果日志Logger.getLogger("org").setLevel(Level.OFF)// 创建 SparkSessionval spark = SparkSession.builder.appName("PageRankExample").master("local[*]").getOrCreate()val sc = spark.sparkContext// 加载边作为图val graph = GraphLoader.edgeListFile(sc, FOLLOWERS_PATH)// 运行 PageRankval ranks = graph.pageRank(0.0001).vertices// Join ranks with the usernamesval users = sc.textFile(USERS_PATH).map { line =>val fields = line.split(",")(fields(0).toLong, fields(1))}val ranksByUsername = users.join(ranks).map {case (id, (username, rank)) => (username, rank)}// 打印结果println(ranksByUsername.collect().mkString("\n"))spark.stop()}
}

输出

(justinbieber,0.15007622780470478)
(matei_zaharia,0.7017164142469724)
(ladygaga,1.3907556008752426)
(BarackObama,1.4596227918476916)
(jeresig,0.9998520559494657)
(odersky,1.2979769092759237)

使用 Spark GraphX 实现 PageRank 算法相关推荐

  1. Spark GraphX下强连通子图和社团发现算法在1T TPC-DS数据集下执行方法、优化和性能估算

    概述: 下面内容说的是在TPC-DS 1T数据集上用web_sales表ws_bill_customer_sk, ws_ship_customer_sk作为起始点和结束点,以ws_quantity为权 ...

  2. Spark GraphX 中的PageRank算法、pregel函数、航班飞行网图分析

    PageRank算法 PageRank算法原理剖析及Spark实现 - 简书 (jianshu.com) import org.apache.spark.SparkContext import org ...

  3. spark的数三角形算法_spark graphx 图计算

    写在前面 态度决定高度!让优秀成为一种习惯! 世界上没有什么事儿是加一次班解决不了的,如果有,就加两次!(- - -茂强) 什么是一个图 一个网络 Network 一个树 Tree 一个RDBMS R ...

  4. 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM

     杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM 发表于2015-09-30 09:53| 1447次阅读| 来源CSDN| 2 条评论| 作者杨鹏 机器学习推荐算法 ...

  5. 大数据——Spark GraphX中算法介绍

    一.ConnectedComponents算法 ConnectedComponents即连通体算法用id标注图中每个连通体,将连通体中序号最小的顶点的id作为连通体的id. 图关系如下时: //创建点 ...

  6. 大数据——GraphX之Pregel算法原理及Spark实现

    GraphX之Pregel算法原理及Spark实现 Pregel 案例:求顶点5到其他各点的最短距离 Pregel原理分析 Pregel 源码 def pregel[A: ClassTag](init ...

  7. 《Spark GraphX in Action》书评及作者访谈

    \ 关键要点 \ 图数据分析与传统数据分析间的差异是什么? \ 如何使用Apache Spark GraphX软件库和GraphFrames这样的API进行图数据处理. \ 使用图数据分析的热门用例. ...

  8. Spark GraphX相关使用方法

    Spark GraphX是一个分布式图处理框架,Spark GraphX基于Spark平台提供对图计算和图挖掘简洁易用的而丰富多彩的接口,极大的方便了大家对分布式图处理的需求.Spark GraphX ...

  9. Spark GraphX 图算法的理解

    Spark GraphX是一个分布式图处理框架,基于 Pregel 接口实现了常用的图算法.包括 PageRank.SVDPlusPlus.TriangleCount. ConnectedCompon ...

最新文章

  1. 你哪来这么多事(一):学生信息插入
  2. 不用任何软件消除mp3的乱码
  3. linux下confstr与uname函数_获取C库与内核信息
  4. 五分钟叫你看懂美国金融危机的成因和巨大危害[转]
  5. java开发区块链只需150行代码
  6. Atitit  从 RGB 到 HSL 或 HSV 的转换
  7. BizTalk database lookup funcatoid DbConnectionString 设定问题有解了
  8. xencenter如何安装Centos7虚拟机系统
  9. 解决jy61陀螺仪传感器读数跳动的问题
  10. 小组取什么名字好_给小组取个可爱的名字
  11. java file seek_Java RandomAccessFile seek()方法
  12. 队列练习之Example004-设计一个循环队列,用 front 和 rear 分别作为队头和队尾指针,另外用一个标志 tag 表示队列是空还是不空
  13. 高等数学学习笔记——第七十六讲——直角坐标系下二重积分的计算
  14. fastdfs磁盘满,如何清除文件?
  15. tomcat点击startup.bat闪退
  16. matlab在读取或者导入excel时,服务器出现意外情况
  17. JS获取去年日期(包含闰年逻辑)
  18. lgo软件许可号许可码_软件是许可的还是出售的?
  19. McAfee可能屏蔽或干扰某些百度网页
  20. 锦州市2021年高考成绩查询时间,2021年辽宁锦州中考考试时间及科目安排(已公布)...

热门文章

  1. 网际快车(FlashGet)0day漏洞曝光
  2. 在linux操作系统下,将文件打包成ISO
  3. virtual audio cable
  4. 安徽省淮北市谷歌卫星地图下载
  5. 【腾讯云 Finops Crane 集训营】Finops Crane-英雄之剑
  6. Delphi多线程详解
  7. Linux多线程概念及实现
  8. 学习单片机的准备工作
  9. 展锐平台的uboot流程
  10. SRPG游戏开发(九)第五章 颜色映射与职业动画 - 一 颜色映射流程(Flow Chart)