阿龙学堂-SparkGraphx基本操作篇-第四篇

本文档主要介绍了SparkGraphX的图操作基础,包括需求背景、依赖包的加载以及具体的代码实现步骤。针对图的处理提供了基本的操作示例,帮助读者理解和应用SparkGraphX进行图计算。
摘要由CSDN通过智能技术生成

0、需求:

图的基本操作实现

1、加载依赖包

2、代码基本操作

 def main(args: Array[String]): Unit = {
    //准备环境
    val conf: SparkConf = new SparkConf().setAppName("test").setMaster("local[4]")
    val sc = new SparkContext(conf)
    sc.setLogLevel("WARN")
    //读取数据
    val vertex: RDD[(VertexId, (String, String))] = sc.parallelize(Array(
      (3L, ("rxin", "stu")),
      (2L, ("istoic", "prof")),
      (5L, ("franklin", "prof")),
      (7L, ("jgzal", "postdoc"))))
    //准备顶点
    //准备边
    val edge: RDD[Edge[String]] = sc.parallelize(Array(Edge(3L, 7L, "collab"),
      Edge(5L, 3L, "Adavisor"), Edge(2L, 5L, "Collaeage"), Edge(5L, 7L, "PI")))
    //构建图
    val defaultUser = ("Jack", "Missing")
    val graph = Graph(vertex, edge, defaultUser)
    //打印图中的边
    graph.vertices.foreach(println(_))
    graph.edges.foreach(println(_))

    val edgesNum: VertexId = graph.numEdges
    println("edgesNum:", edgesNum)
    //打印图中顶点的个数
    val verticesNum: VertexId = graph.numVertices
    println("verticesNum:", verticesNum)
    //打印构建的图的入度
    println("indegree")
    graph.inDegrees.foreach(println(_))
    //打印构建的图的出度
    println("outdegree")
    graph.outDegrees.foreach(println(_))
    //打印构建的图的度
    println("degree")
    graph.degrees.foreach(println(_))
    graph.mapVertices((VertexId, VD) => VD._1 + "-" + VD._2).vertices.foreach(println(_))

    graph.mapEdges(edges => "name" + edges.attr).edges.foreach(println(_))
    graph.mapTriplets(edge => "name" + edge.attr).edges.foreach(println(_))
    graph.mapTriplets(edge => "name" + edge.attr).vertices.foreach(println(_))

    //对图进行翻转
    graph.reverse.edges.foreach(println(_))

    graph.subgraph(vpred = (VertexId, VD) => VD._2 != "missing").edges.foreach(println(_))
    val subgraph: Graph[(String, String), String] = graph.subgraph(vpred = (VertexId, VD) => VD._2 != "missing")
    //连通图----强联通图和连通图
    println("connetion graph")
    val ccgraph: Graph[VertexId, String] = graph.connectedComponents()
    ccgraph.edges.foreach(println(_))

    println("mask graph")
    val mask: Graph[(String, String), String] = subgraph.mask(ccgraph)
    mask.edges.foreach(println(_))
    mask.vertices.foreach(println(_))
    
    val join = sc.parallelize(Array((3L, "123")))
    graph.joinVertices(join)((VertexId, VD, U) => (VD._1,VD._2 + U)).vertices.foreach(println(_))
    graph.outerJoinVertices(join)((VertexId, VD, U) => (VD._1,VD._2 + U)).vertices.foreach(println(_))
  }

 

有问题请联系QQ:765120845

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值