鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

CD

run API

  • API
    run(edgeInfo: RDD[(Long, Long, Double)],part: Int,minLoopLen: Int,maxLoopLen: Int,minRate: Double,maxRate: Double): RDD[Array[Long]]
  • 功能描述

    根据指定约束条件计算有向有权关系网络中环路检测信息,即有向图中首尾相连的路径:,如果存在,则该路径形成一个环路。

  • API描述
    1. 包名:package org.apache.spark.graphx.lib
    2. 类名:CycleDetectionWithConstrains
    3. 方法名:run
    4. 输入:

      RDD[(Long, Long, Double)] 带权重的有向图边数据

    5. 参数详情:

      参数名称

      参数含义

      取值类型

      graph

      带权重的有向图边数据

      RDD[(Long, Long,Double)],边权重为正数

      part

      计算时分区个数

      Int如100等,正整数

      minLoop

      小的环路长度

      Int,一般取值为2以上,正整数

      maxLoop

      大的环路长度

      Int,一般取值为10以下,正整数,需大于等于minLoop

      minRate

      小的边权比

      Double如0.8等,正浮点数

      maxRate

      大的边权比

      Double如1.2等,正浮点数,需大于等于minRate

    6. 核心参数:
      1. minLoop: 小的环路长度。
      2. maxLoop: 长的环路长度。
      3. minRate: 边权比(下一边/当前边) 小的比率。
      4. maxRate: 边权比(下一边/当前边)最大的比率。

    g. 输出:RDD[Array[Long]] 满足约束的环路信息,即环路长度在[minLoop,maxLoop],边权比在[minRate, maxRate]。其中每一行表示一个环,以节点ID表示,顺序是环路的次序,无起始之分。

  • 使用样例

    CycleDetectionWithConstrains样例:

    val conf = new SparkConf().setAppName("Cycle Detection").setMaster(host)
    val sc = new SparkContext(conf)
    val input = sc.parallelize(Array((1, 2, 11), (2, 3, 12), (2, 4, 12), (3, 4, 13), (4, 1, 12)))
      .map(f => (f._1.toLong, f._2.toLong, f._3.toDouble))
    val part = 1
    val minLoopLen = 2
    val maxLoopLen = 10
    val minRate = 0.8
    val maxRate = 1.2
    val cycles = CycleDetectionWithConstrains.run(input, part, minLoopLen, maxLoopLen, minRate, maxRate)
  • 样例结果

    每一行表示一个环路信息,以节点ID为标识,符合上述约束。

    1,2,4
    1,2,3,4