Closeness
run API
- API
def run(edgeRDD: RDD[(VertexId, VertexId, Double)],weighted: Boolean,k: Int,p: Double): RDD[(Long, Double)]
- 功能描述
- API描述
- 包名:package org.apache.spark.graphx.lib
- 类名:Closeness
- 方法名:run
- 输入:
- edges: RDD[(Long, Long, Double)],为图的边列表信息(权值大于 0)。
- weighted: Boolean,图的属性信息,是否为有权图。
- k: Int,为算法输出的结点数量(要求大于0或等于-1);当k=-1时,算法输出全部结点的Closeness值。
- p: Double,近似解精度参数(要求大于0),当0<p<1时,算法输出近似解,当p>=1时,算法输出精确解。
- 核心参数:
- k: 算法输出的结点数量。取值依据用户需求设置,不建议取值大于 10000(客户场景中一般所需的结点数量不多于10000个,例如在安平场景中,客户选取的重点关注对象一般不多于10000人)。该参数的大小对算法的性能有较小影响,当k值增大时,算法性能会略微降低。当k=-1 时将输出图中所有结点的ID及Closeness值。
- p: 近似解精度参数(要求大于0),当0<p<1时,算法输出近似解,当p>=1时,算法输出精确解。该值的大小会影响算法性能和算法精度,值越大则算法性能越低但精度越高,值越小则算法性能越高但精度越低。
- 参数详情:
参数名称
参数含义
取值类型
edges
从文件读入的图边列表信息(权值大于0)。
RDD[(Long,Long,Dou ble)]
weighted
图的属性信息,是否为有权图。
Boolean
k
算法输出的结点数量。
Int大于0或等于-1的整型数值
p
近似解精度,当0<p<1时,算法输出近似解,当p>=1时,算法输出精确解。
Double大于0的浮点型数值
- 输出:RDD[(Long, Double)],为图中紧密中心性值最大的k个结点编号,与每个结点对应的紧密中心性的值组成的列表。Closeness算法在近似解精度参数p设置不同时,输出结果和精度会有波动,其他参数不影响Closeness算法的输出结果和精度。
- 使用样例
val sparkconf = new SparkConf().setAppName("TopKClosenessCompute").setMaster(host) val sc = new SparkContext(sparkconf) val edges = sc.makeRDD(Seq((1L, 2L, 0.5), (1L, 3L, 1.2), (1L, 4L, 2.5), (2L, 3L, 2.1), (3L, 4L, 3.1), (3L, 5L, 5.2), (4L, 5L, 1.2), (4L, 6L, 1.6), (5L, 1L, 2.1), (5L, 2L, 3.4), (5L, 6L, 2.8), (6L, 7L, 3.5))) val res = Closeness.run(edges, weighted = true, k = 3, p = 1.0).collect()
样例结果:
res=[(3, 0.36036), (2, 0.28986), (4, 0.25974)]
父主题: 算法API