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

PR

runUntilConvergence API

  • API
    def runUntilConvergence[VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED],tol: Double,resetProb: Double = 0.15): Graph[Double, Double]
  • 功能描述

    本算法模型基于Spark框架,根据指定的收敛精度,通过残差迭代方式计算图中各节点PageRank值,PageRank值取值范围[0,N],N为节点个数。本算法接口与开源Spark GraphX算法接口完全一致,本算法支持有向无权。

  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:PageRank
    3. 方法名:runUntilConvergence
    4. 输入:graph: Graph[VD,ED]
    5. 核心参数:
      1. tol:收敛时允许的容差(通常取值1e-7)
      2. resetProb:重置概率系数,默认值(0.15)
    6. 参数详情:

      参数名称

      参数含义

      取值类型

      graph

      GraphX图数据

      Graph[VD,ED],VD、ED为泛型类型,分别表示输入图的节点属性类型与边属性类型,计算过程不感知。

      tol

      收敛时允许的容差

      Double如1e-7等,取值范围:大于0

      resetProb

      重置系数

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

    7. 输出:Graph:Graph[Double,Double],节点属性存储该节点的PageRank值,同时,为与开源保持一致,边属性存储源节点出度的倒数。
  • 使用样例

    PageRank样例:

    val conf = new SparkConf().setAppName("PageRank").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 g = Graph.fromEdges(sc.parallelize(edges, 3), 1D)
    PageRank.runUntilConvergence (g, 1e-7, 0.15)
  • 样例结果

    第一列为节点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

run API

  • API
    def run [VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED],numIter: Int,resetProb: Double = 0.15): Graph[Double, Double]
  • 功能描述

    本算法模型基于Spark框架,根据指定的收敛精度,通过残差迭代方式计算图中各节点PageRank值,PageRank值取值范围[0,N],N为节点个数。本算法接口与开源Spark GraphX算法接口完全一致,本算法支持有向无权。

  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:PageRank
    3. 方法名:run
    4. 输入:graph:Graph[VD,ED]
    5. 核心参数:
      1. numIter:迭代次数
      2. resetProb:重置概率系数,默认值(0.15)
    6. 参数详情:

      参数名称

      参数含义

      取值类型

      graph

      GraphX图数据

      Graph[VD,ED],VD、ED为泛型类型,分别表示输入图的节点属性类型与边属性类型,计算过程不感知。

      numIter

      迭代次数

      Int,取值范围:大于0。

      resetProb

      重置系数

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

    7. 输出:Graph:Graph[Double,Double],节点属性存储该节点的PageRank值,同时,为与开源保持一致,边属性存储源节点出度的倒数。
  • 使用样例

    PageRank样例:

    val conf = new SparkConf().setAppName("PageRank").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 g = Graph.fromEdges(sc.parallelize(edges, 3), 1D)
    PageRank.run (g, 100, 0.15)
  • 样例结果

    第一列为节点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