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)
}
}
打印一下符合要求的顶点的数量:

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

浙公网安备 33010602011771号