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

Modularity

Modularity API

  • API
    def run(nodes: RDD[(Long, Long)], edges: RDD[(Long, Long, Double)], isDirected: Boolean, partitionNum: Int = 1) : Double
  • 功能描述

    根据指定输入参数计算图在指定社区划分下的模块度值。

  • 输入输出
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:Modularity
    3. 方法名:run
    4. 输入:
      1. nodes: RDD[(Long, Long)],为图中节点ID与对应的社区ID
      2. edges: RDD[(Long, Long, Double)],为图的边列表信息(权值大于0)
      3. isDirected: Boolean,图的属性信息,是否为有向图
      4. partitionNum: Int,并行化参数,分区数量
    5. 核心参数:

      partitionNum: 算法接受的分区个数,要求大于0,取值范围可以按照一个分片大小4M-6M计算(经验值,根据具体数据量设置。不建议取太大的值,会造成系统资源的占用)。该值的大小会影响算法性能,可调整其数值大小优化算法性能。

    6. 输出:Double,为指定图在对应社区划分下的模块度数值。

      参数名称

      参数含义

      取值类型

      nodes

      从文件读入的节点与对应的社区信息

      RDD[(Long, Long)]

      edges

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

      RDD[(Long, Long, Double)]

      isDirecte d

      图的属性信息,是否为有向图

      Boolean

      partition

      Num

      数据分区个数

      Int最大于0的整型

  • 使用样例

    Modularity样例:

    val sparkconf = new SparkConf().setAppName("modularityCompute").setMaster(hos
    val sc = new SparkContext(sparkconf)
    
    val nodesRDD = sc.makeRDD(Array((1L, 1L), (2L, 1L), (3L, 2L), (4L, 2L), (5L, 2L), (6L, 3L), (7L, 3L))))
    val edgesRDD = sc.makeRDD(Array((1L, 2L, 1.0), (1L, 3L, 1.0), (1L, 4L, 1.0), (2L, 3L, 1.0),
                                    (3L, 4L, 1.0), (3L, 5L, 1.0), (4L, 5L, 1.0), (4L, 6L, 1.0),
                                    (5L, 1L, 1.0), (5L, 2L, 1.0), (5L, 6L, 1.0), (6L, 7L, 1.0)))
    val isDirected = false
    val partitionNum = 10
    val modularityQ = Modularity.run(nodesRDD, edgesRDD, isDirected, partitionNum)
    println(“Modularity:\t%.5f”.format(modularityQ))
  • 结果样例模块度计算结果:
    Modularity:     0.01042