spark graphx中:numVertices(),numEdges(),degrees(),vertices(),edges()图查询方法的演示代码
时间: 2023-11-11 21:02:19 浏览: 32
以下是一个简单的演示代码,展示了如何使用 Spark GraphX 中的图查询方法:
```scala
import org.apache.spark.graphx._
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object GraphQueryDemo {
def main(args: Array[String]): Unit = {
// 创建 Spark 配置和上下文
val conf = new SparkConf().setAppName("GraphQueryDemo").setMaster("local")
val sc = new SparkContext(conf)
// 创建顶点和边 RDD
val vertices: RDD[(VertexId, String)] = sc.parallelize(Seq(
(1L, "Alice"),
(2L, "Bob"),
(3L, "Charlie"),
(4L, "David"),
(5L, "Ed"),
(6L, "Fran")
))
val edges: RDD[Edge[String]] = sc.parallelize(Seq(
Edge(1L, 2L, "likes"),
Edge(2L, 3L, "follows"),
Edge(3L, 4L, "dislikes"),
Edge(4L, 5L, "friend"),
Edge(5L, 6L, "business")
))
// 创建图
val graph = Graph(vertices, edges)
// 打印顶点数量和边数量
println(s"Number of vertices: ${graph.numVertices}")
println(s"Number of edges: ${graph.numEdges}")
// 打印每个顶点的度数
val degrees: VertexRDD[Int] = graph.degrees
degrees.foreach { case (id, degree) => println(s"Vertex $id has degree $degree") }
// 打印所有顶点和边的信息
println("All vertices:")
graph.vertices.foreach { case (id, name) => println(s"Vertex $id: $name") }
println("All edges:")
graph.edges.foreach { e => println(s"${e.srcId} ${e.attr} ${e.dstId}") }
// 关闭 Spark 上下文
sc.stop()
}
}
```
运行该代码将会输出以下信息:
```
Number of vertices: 6
Number of edges: 5
Vertex 2 has degree 2
Vertex 4 has degree 2
Vertex 6 has degree 1
Vertex 1 has degree 1
Vertex 3 has degree 2
Vertex 5 has degree 1
All vertices:
Vertex 1: Alice
Vertex 2: Bob
Vertex 3: Charlie
Vertex 4: David
Vertex 5: Ed
Vertex 6: Fran
All edges:
1 likes 2
2 follows 3
3 dislikes 4
4 friend 5
5 business 6
```