鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

Trillion PageRank

run API

  • API
    def run(edge: RDD[(Long, (Double, Array[Long]))], part: Int, numIter: Int, resetProb: Double, isOnlySrc: Boolean = false): RDD[(Long, Double)]
  • 功能描述

    本算法模型基于Spark框架,基于指定迭代次数计算图中各节点PageRank值,PageRank值取值范围[0, N],N为节点个数。本算法支持有向无权。

  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:TrillionPageRank
    3. 方法名:run
    4. 输入:graph: RDD[(Long, (Double, Array[Long]))],图数据。表示为{源节点,(源点初始值,目标点集合)}
    5. 核心参数:
      1. partNum: 分区数。
      2. numIter: 迭代次数。
      3. resetProb:重置概率系数,缺省值(0.15)。
    6. 参数详情:

      参数名称

      取值类型

      参数含义

      graph

      (Long, (Double, Array[Long])),表示(源节点,(源点初始值,目的节点集合))。

      GraphX图数据

      partNum

      Int,取值范围:大于0。

      分区数

      numIter

      Int,取值范围:大于0。

      迭代次数

      resetProb

      Double,经验值0.15,取值范围:[0,1]。

      重置系数

      isOnlySrc

      Boolean,缺省值为false,即计算全局的节点的pagerank。

      是否只计算源点的PageRank

    7. 输出:PageRank值,RDD[(Long, Double)],增量结点的PageRank值。
  • 使用样例

    Trillion PageRank样例:

    val conf = new SparkConf().setAppName(“TrillionPageRank”).setMaster(host)
    val sc = new SparkContext(conf)
    val edges = Array(Edge(1,2,1.0), Edge(1,3,1.0), Edge(1,6,1.0), Edge(2,8,1.0), Edge(3,1,1.0), Edge(3,2,1.0),
       Edge(3,4,1.0), Edge(3,6,1.0), Edge(3,7,1.0), Edge(3,8,1.0), Edge(4,7,1.0), Edge(4,8,1.0), Edge(5,2,1.0),
       Edge(5,4,1.0), Edge(5,6,1.0), Edge(5,7,1.0), Edge(5,8,1.0), Edge(6,2,1.0), Edge(6,4,1.0), Edge(6,5,1.0),
       Edge(6,7,1.0), Edge(6,8,1.0), Edge(7,4,1.0), Edge(7,8,1.0), Edge(7,9,1.0), Edge(7,11,1.0), Edge(8,2,1.0),
       Edge(8,4,1.0), Edge(8,7,1.0), Edge(8,11,1.0), Edge(9,4,1.0), Edge(9,7,1.0), Edge(9,8,1.0), Edge(9,11,1.0),
       Edge(10,1,1.0), Edge(10,3,1.0), Edge(10,4,1.0), Edge(10,5,1.0), Edge(11,6,1.0), Edge(11,8,1.0), Edge(11,9,1.0))
    val graph = sc.parallelize(edges, 3).map(f => (f.srcId, Array(f.dstId))).reduceByKey(_ ++ _).mapValues((1.0, _))
    val iterNum = 100
    val resetProb = 0.15
    val part = 100
    val resultG = TrillionPageRank.run(graph, part, iterNum, resetProb)
  • 样例结果

    PageRank计算结果:

    节点ID

    PR

    10

    0.15000000000000002

    1

    0.21632361452756482

    3

    0.24316669078281006

    5

    0.2960495884141481

    6

    0.6716152259655768

    9

    0.9086302548739689

    2

    1.0095338325502028

    11

    1.325458202205165

    4

    1.5562848351772833

    7

    1.8027471258784566

    8

    2.8201906296248227