Modularity
Modularity API
- API
def run(nodes: RDD[(Long, Long)], edges: RDD[(Long, Long, Double)], isDirected: Boolean, partitionNum: Int = 1) : Double
- 功能描述
- 输入输出
- 包名:package org.apache.spark.graphx.lib
- 类名:Modularity
- 方法名:run
- 输入:
- nodes: RDD[(Long, Long)],为图中节点ID与对应的社区ID
- edges: RDD[(Long, Long, Double)],为图的边列表信息(权值大于0)
- isDirected: Boolean,图的属性信息,是否为有向图
- partitionNum: Int,并行化参数,分区数量
- 核心参数:
partitionNum: 算法接受的分区个数,要求大于0,取值范围可以按照一个分片大小4M-6M计算(经验值,根据具体数据量设置。不建议取太大的值,会造成系统资源的占用)。该值的大小会影响算法性能,可调整其数值大小优化算法性能。
- 输出:Double,为指定图在对应社区划分下的模块度数值。
参数名称
参数含义
取值类型
nodes
从文件读入的节点与对应的社区信息
RDD[(Long, Long)]
edges
从文件读入的图边列表信息(权值大于0)
RDD[(Long, Long, Double)]
isDirecte d
图的属性信息,是否为有向图
Boolean
partition
Num
数据分区个数
Int最大于0的整型
- 使用样例
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
父主题: 算法API