Spark2.x管理与开发-Spark GraphX-【运行图计算程序】

Posted on 2020-08-13 17:48  MissRong  阅读(133)  评论(0)    收藏  举报

Spark2.x管理与开发-Spark GraphX-【运行图计算程序】

对点、边操作

Scala代码:

package sparkGraphX

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.graphx.Edge
import org.apache.spark.graphx.Graph

/**
 * Spark GraphX
 * 对点和边操作
 */
object GraphXDemo {
  def main(args: Array[String]): Unit = {
    val conf=new SparkConf().setAppName("GraphXDemo").setMaster("local")
    val sc=new SparkContext(conf)
    //定义点和边
    val users=sc.parallelize(Array((3L,("rxin","student")),(7L,("jgonjal","postdoc")),(5L,("franklin","prof")),(2L,("istoica","prof"))))
    // (Array(Edge(源顶点ID-Long类型的,目标顶点ID-Long类型的,属性),Edge(),Edge()))
    val relationships=sc.parallelize(Array(Edge(3L,7L,"collab"),Edge(5L,3L,"advisor"),Edge(2L,5L,"colleague")))
    //构件图--Graph(点,边)
    val graph=Graph(users,relationships)
    //1.对点操作:
    //(case(Tuple的第一位-id,(Tuple的第二位叫成-name,Tuple的第三位-post))=>判断出post等于"prof"的)计数
//    val postdoc_count=graph.vertices.filter{case(id,(name,post))=>post=="prof"}.count
    //2.对边操作:
    //取起始位置ID比目标位置ID大的边,然后计数
    val edges_count=graph.edges.filter(e=>e.srcId>e.dstId).count()
    //1.打印一下符合要求的顶点的数量
//    println("postdoc_count:"+postdoc_count)
    //2.打印一下符合要求的边的数量
    println("edges_count:"+edges_count)
  }
}

打印一下符合要求的顶点的数量:

 

 

 打印一下符合要求的边的数量:

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3