图计算
作者: 时海
入度、出度

计算图顶点的入度、出度示例:

    g.inDegrees.printSchema()

    //    root
    //    |-- id: string (nullable = true)
    //    |-- inDegree: integer (nullable = false)

    g.inDegrees.show()

    //    +---+--------+
    //    | id|inDegree|
    //    +---+--------+
    //    |  f|       1|
    //    |  e|       1|
    //    |  d|       1|
    //    |  c|       2|
    //    |  b|       2|
    //    |  a|       1|
    //    +---+--------+

    g.outDegrees.printSchema()

    //    root
    //    |-- id: string (nullable = true)
    //    |-- outDegree: integer (nullable = false)
    
    g.outDegrees.show()

    //    +---+---------+
    //    | id|outDegree|
    //    +---+---------+
    //    |  f|        1|
    //    |  e|        2|
    //    |  d|        1|
    //    |  c|        1|
    //    |  b|        1|
    //    |  a|        2|
    //    +---+---------+

入度:是通过对边的dataframe操作实现的,按"dst"列分组统计数量,源码如下:

  @transient lazy val inDegrees: DataFrame = {
    edges.groupBy(edges(DST).as(ID)).agg(count("*").cast("int").as("inDegree"))
  }
出度:是通过对边的dataframe操作实现的,按"src"列分组统计数量,源码如下:
  @transient lazy val outDegrees: DataFrame = {
    edges.groupBy(edges(SRC).as(ID)).agg(count("*").cast("int").as("outDegree"))
  }












标签: nullable、edges、outdegree、indegrees、indegree
一个创业中的苦逼程序员
  • 回复
隐藏