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

Incremental PageRank

run API

  • API
    def run(graph: RDD[(Long, Int, Array[Long], Array[Int], Double)], partNum: Int, numIter: Int, resetProb: Double): RDD[(Long, Double)]
  • 功能描述

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

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

      参数名称

      取值类型

      描述

      graph

      (Long, Int, Array[Long], Array[Int], Double),表示(源结点,源结点状态,目标结点集合,目标结点状态集合,源结点PR值)

      • 源结点状态: 存量点状态为0,增量点状态为1。如果结点状态不为0或1,则会丢失该部分信息,影响计算精度。
      • 目标结点状态集合:目标结点集合中的状态,存量点状态为0,增量点状态为1。如果结点状态不为0或1,则会丢失该部分信息,影响计算精度。
      • 源结点PR值:存量点PR值为历史结果,增量点PR值默认为1.0。

      GraphX图数据

      partNum

      Int,取值范围:大于0。

      分区数

      numIter

      Int,取值范围:大于0。

      迭代次数

      resetProb

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

      重置系数

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

    Incremental PageRank样例:

    val conf = new SparkConf().setAppName("IncPageRank").setMaster(host)
    val sc = new SparkContext(conf)
    val edges = Array(
      (1L,0,Array(2L,3L),Array(0,0),1.125786),
      (2L,0,Array(3L,5L),Array(0,1),0.618),
      (3L,0,Array(4L),Array(0),1.132841),
      (4L,0,Array(1L),Array(0),1.123374),
      (5L,1,Array(3L,6L),Array(0,1),1.0),
      (6L,1,Array(4L),Array(0),1.0)
    )
    val graph = sc.parallelize(edges, 3)
    val numIter = 10
    val resetProb = 0.15
    val part = 10
    
    val result = IncPageRank.run(graph,part,numIter,resetProb)
  • 样例结果
    只输出增量点5和6的PageRank计算结果

    第一列为结点ID,第二列为PR值。

    5,0.27749999999999997
    6,0.2679375