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

Closeness

run API

  • API
    def run(edgeRDD: RDD[(VertexId, VertexId, Double)],weighted: Boolean,k: Int,p: Double): RDD[(Long, Double)]
  • 功能描述

    根据指定输入参数计算图中紧密中心性值最大的K个结点。

  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:Closeness
    3. 方法名:run
    4. 输入:
      1. edges: RDD[(Long, Long, Double)],为图的边列表信息(权值大于 0)。
      2. weighted: Boolean,图的属性信息,是否为有权图。
      3. k: Int,为算法输出的结点数量(要求大于0或等于-1);当k=-1时,算法输出全部结点的Closeness值。
      4. p: Double,近似解精度参数(要求大于0),当0<p<1时,算法输出近似解,当p>=1时,算法输出精确解。
    5. 核心参数:
      1. k: 算法输出的结点数量。取值依据用户需求设置,不建议取值大于 10000(客户场景中一般所需的结点数量不多于10000个,例如在安平场景中,客户选取的重点关注对象一般不多于10000人)。该参数的大小对算法的性能有较小影响,当k值增大时,算法性能会略微降低。当k=-1 时将输出图中所有结点的ID及Closeness值。
      2. p: 近似解精度参数(要求大于0),当0<p<1时,算法输出近似解,当p>=1时,算法输出精确解。该值的大小会影响算法性能和算法精度,值越大则算法性能越低但精度越高,值越小则算法性能越高但精度越低。
    6. 参数详情:

      参数名称

      参数含义

      取值类型

      edges

      从文件读入的图边列表信息(权值大于0)。

      RDD[(Long,Long,Dou ble)]

      weighted

      图的属性信息,是否为有权图。

      Boolean

      k

      算法输出的结点数量。

      Int大于0或等于-1的整型数值

      p

      近似解精度,当0<p<1时,算法输出近似解,当p>=1时,算法输出精确解。

      Double大于0的浮点型数值

    7. 输出:RDD[(Long, Double)],为图中紧密中心性值最大的k个结点编号,与每个结点对应的紧密中心性的值组成的列表。Closeness算法在近似解精度参数p设置不同时,输出结果和精度会有波动,其他参数不影响Closeness算法的输出结果和精度。
  • 使用样例

    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)]