PersonalizedPageRank
runWithOptions API
- API
def runWithOptions[VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED], numIter: Int, resetProb: Double = 0.15, srcId: Option[VertexId] = None): Graph[Double, Double]
- 功能描述
- API描述
- 包名:package org.apache.spark.graphx.lib.PageRank
- 类名:PageRank
- 方法名:runWithOptions
- 输入:Graph[VD, ED]
- 参数详情:
参数名称
参数含义
取值类型
graph
GraphX图数据
Graph[VD, ED],VD、ED为泛型类型,分别表示输入图的节点属性类型与边属性类型,计算过程不感知
numIter
迭代次数
Int,取值范围:大于0
resetProb
重置系数
Double,经验值0.15,取值范围:[0, 1]
srcId
指定节点ID
Long型,可为空,为空时计算全量固定版本pagerank
- 输出:Graph:Graph[Double, Double],节点属性存储该节点的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.runWithOptions(g, 100, 0.15, Option(1L))
- 样例结果:
6 0.077023744 3 0.044277239 9 0.05101366 4 0.107173489 1 0.156272609 7 0.125956472 10 0 11 0.085580858 8 0.225763317 5 0.013094036 2 0.113844576
runUntilConvergenceWithOptions API
- API
def runUntilConvergenceWithOptions[VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED], tol: Double, resetProb: Double = 0.15, srcId: Option[VertexId] = None): Graph[Double, Double]
- 功能描述
- API描述
- 包名:package org.apache.spark.graphx.lib.PageRank
- 类名:PageRank
- 方法名:runUntilConvergenceWithOptions
- 输入:Graph[VD, ED]
- 参数详情:
参数名称
参数含义
取值类型
graph
GraphX图数据
Graph[VD, ED],VD、ED为泛型类型,分别表示输入图的节点属性类型与边属性类型,计算过程不感知
tol
收敛时允许的容差
Double如1e-7等,取值范围:大于0
resetProb
重置系数
Double,经验值0.15,取值范围:[0, 1]
srcId
指定节点ID
Long型,可为空,为空时计算全量残差版本pagerank
- 输出:Graph:Graph[Double, Double],节点属性存储该节点的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.runUntilConvergenceWithOptions(g, 1e-7, 0.15, Option(1L))
- 样例结果:
6 0.07702377910782882 3 0.044277299269150125 9 0.05101362020140663 4 0.1071734255124889 1 0.1562728209499416 7 0.12595639498739172 10 0.0 11 0.08558080335029711 8 0.22576321877417618 5 0.0130940324264644 2 0.11384460542085444
runParallelPersonalizedPageRank API
- API
def runParallelPersonalizedPageRank[VD: ClassTag, ED: ClassTag](graph: Graph[VD, ED], numIter: Int, resetProb: Double = 0.15, sources: Array[VertexId]): Graph[Vector, Double]
- 功能描述
- API描述
- 包名:package org.apache.spark.graphx.lib.PageRank
- 类名:PageRank
- 方法名:runParallelPersonalizedPageRank
- 输入:Graph[VD, ED]
- 参数详情:
参数名称
参数含义
取值类型
graph
GraphX图数据
Graph[VD, ED],VD、ED为泛型类型,分别表示输入图的节点属性类型与边属性类型,计算过程不感知
numIter
迭代次数
Int,取值范围:大于0
resetProb
重置系数
Double,经验值0.15,取值范围:[0, 1]
sources
指定节点ID集合
Array[Long]型,不可为空
- 输出:Graph:Graph[Vector, Double],节点属性存储该节点对于各源节点的PageRank值,顺序与sources保持一致,使用Vector进行描述,同时,为与开源保持一致,边属性存储源节点出度的倒数。
- 使用样例
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.runParallelPersonalizedPageRank(g, 100, 0.15, Array(1L, 10L))
- 样例结果:
6 0.07702374399273663,0.04699968348218789 3 0.04427723918390972,0.0426168427145131 9 0.05101366004234638,0.05167737982879439 4 0.10717348941060002,0.1354208337916541 1 0.15627260888438724,0.0379123860512227 7 0.12595647209080826,0.13286572218812956 10 0.0,0.15000000000000005 11 0.08558085784605748,0.08274146069582425 8 0.22576331655417475,0.20482847772813126 5 0.013094036478765229,0.03986494619197195 2 0.1138445755162144,0.07507226732757086
父主题: 算法API