`

spark graphx 最短路径及中间节点

阅读更多

老外论坛找到一个最短路径和中间节点的算法

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.graphx.{EdgeDirection, VertexId, Graph}
import org.apache.spark.graphx.util.GraphGenerators


object Pregel_SSSP {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("Pregel_SSSP")
    val sc = new SparkContext(conf)
    // A graph with edge attributes containing distances
    val graph: Graph[Long, Double] =
      GraphGenerators.logNormalGraph(sc, numVertices = 5).mapEdges(e => e.attr.toDouble)
    graph.edges.foreach(println)
    val sourceId: VertexId = 0 // The ultimate source

    // Initialize the graph such that all vertices except the root have distance infinity.
    val initialGraph : Graph[(Double, List[VertexId]), Double] = graph.mapVertices((id, _) =>
      if (id == sourceId) (0.0, List[VertexId](sourceId))
      else (Double.PositiveInfinity, List[VertexId]()))

    val sssp = initialGraph.pregel((Double.PositiveInfinity, List[VertexId]()), Int.MaxValue, EdgeDirection.Out)(

      // Vertex Program
      (id, dist, newDist) => if (dist._1 < newDist._1) dist else newDist,

      // Send Message
      triplet => {
        if (triplet.srcAttr._1 < triplet.dstAttr._1 - triplet.attr ) {
          Iterator((triplet.dstId, (triplet.srcAttr._1 + triplet.attr , triplet.srcAttr._2 :+ triplet.dstId)))
        } else {
          Iterator.empty
        }
      },
      //Merge Message
      (a, b) => if (a._1 < b._1) a else b)
    println(sssp.vertices.collect.mkString("\n"))
  }
}

 

3
1
分享到:
评论

相关推荐

    spark graphX实战 中英文两版

    2. **Shortest Paths**: GraphX支持寻找图中最短路径的算法,例如单源最短路径(Dijkstra算法)和所有对最短路径。 3. **Triangle Counting**: 计算图中三角形的数量,可用于社区检测和社交网络分析。 4. **...

    大数据书籍-Spark Graph X实战(高清)

    Shortest Path则是寻找两个节点之间最短路径的算法,常见于路由问题和社交网络分析。通过Spark GraphX,这些算法可以在分布式环境下高效运行,处理亿级甚至十亿级的节点和边。 另外,书中可能还会涵盖图的遍历策略...

    Spark-GraphX框架下的大规模加权图最短路径查询

    ### Spark-GraphX框架下的大规模加权图最短路径查询 #### 摘要与背景 最短路径问题一直是计算机科学的重要研究课题,在社交网络分析、交通运输规划等多个领域都有着广泛的应用。随着数据量的爆炸性增长,传统的...

    Spark GraphX源码分析.pdf

    Spark GraphX源码分析: 在大数据时代背景下,图计算成为了一个重要的研究领域,而Apache Spark的GraphX库是处理大规模图数据的关键工具之一。GraphX在Spark的基础上实现了图并行计算,并提供了丰富的图操作接口。...

    Spark_GraphX大规模图计算和图挖掘

    4. **图遍历与迭代**:GraphX支持深度优先搜索(DFS)、广度优先搜索(BFS)等图遍历方法,这些方法在寻找特定模式、检测环路或者查找最短路径时非常有用。此外,Pregel API允许用户自定义迭代计算,适应各种图处理...

    基于Spark-Graphx的大规模用户图计算和应用 完整高清

    《基于Spark-Graphx的大规模用户图计算和应用》是一份深入探讨如何使用Apache Spark的GraphX组件进行大规模用户图计算的完整高清资料。Spark作为一个快速、通用且可扩展的数据处理框架,其GraphX模块为处理图形数据...

    spark graphx!!!!!!!!!!!!!!!!!!!!!!!!

    例如,PageRank算法可以用来找出网络中的重要节点,ShortestPaths可以找到两个节点之间的最短路径,而TriangleCounting则有助于发现图中的社区结构。 在使用GraphX时,确保你的环境已经配置好CDH集群(如描述中提到...

    PregelShortestPath:Pregel 系统的最短路径算法。 使用 Apache Spark 和 GraphX API 实现。 Scala

    本项目“PregelShortestPath”是用 Scala 实现的,旨在利用 Spark 和 GraphX 来求解图中的最短路径问题。以下是对这些技术及其应用的详细解释。 **Pregel(Parallel Graph Processing System)** 是 Google 提出的...

    Spark 框架的Graphx 算法研究

    Graphx的实现允许在大规模图数据集上快速找到最短路径,提高效率。 Graphx的应用场景广泛,包括但不限于社交网络分析、推荐系统、网络爬虫的链接分析、欺诈检测、社区发现等。在社交网络中,可以分析用户关系的模式...

    Spark_Graphs-Shortest_Path:使用火花图的图算法“最短路径”的两种实现

    本篇文章将深入探讨如何利用Spark GraphX实现图算法中的“最短路径”问题,主要涉及两种不同的实现方法。 一、Pregel算法实现 1. Pregel简介:Pregel是一种由Google提出的图并行计算模型,灵感来源于Bulk ...

    随机关系图可用于Graphx学习测试

    2. **图分析**:计算图的属性,如节点度数、聚类系数、最短路径等。 3. **图算法**:实施PageRank、三角计数、社区检测等算法,以理解图的结构特性。 4. **图转换**:对图进行操作,如添加、删除边,或者修改节点...

    license.txt

    - **Spark GraphX**:这是Apache Spark中的一个库,专门用于图计算。它提供了一种简洁高效的方式来处理大规模图数据,并支持多种图算法,包括最短路径算法。 ### 总结 本文介绍了最短路径算法的基本概念及其常见...

    GraphX(图形处理)源码

    3. **图算法**:GraphX提供了多种内置的图算法,如PageRank、ShortestPaths、TriangleCount等,用于计算节点的重要性、寻找最短路径和检测三元组。 4. **属性图**:GraphX支持属性图,这意味着每个顶点和边都可以有...

    Big Data Analytics with Spark PDF

    Spark GraphX是一个专门用于图计算的模块,它允许用户轻松地执行复杂的图操作,比如PageRank算法、最短路径算法等。通过学习这部分内容,读者可以掌握如何使用GraphX进行图数据的高效分析。 ### 高速数据流处理 在...

    Spark2.0.2API

    在Spark 2.0.2中,GraphX提供了图的强一致视图,以及各种图算法,如PageRank和单源最短路径,适用于社交网络分析、推荐系统等领域。 总的来说,Spark 2.0.2 API 为开发者提供了一个全面的工具箱,涵盖了大数据处理...

    spark图计算应用解析

    在SparkGraphX中,可以通过PregelAPI实现最短路径算法。这种算法基于BSP模型,通过迭代的方式逐步更新顶点的距离,直到找到所有顶点之间的最短路径。 **2.6 GraphX实例** 本节提供了具体的GraphX使用案例,包括...

    云计算课程实验要求1

    实验1要求使用GraphX的Pregel API实现单源最短路径(SSSP)算法,这需要对Vertex和Edge RDDs以及GraphLoader边缘列表文件的预处理有深入了解。 实验2的重点是PageRank算法的应用,用于解决Wikipedia投票选举问题。...

    Apache Spark 2.0.2 中文文档 - v0.1.0

    7. **GraphX(图计算)**:GraphX提供了图数据处理的支持,它构建在RDD之上,提供了图的操作和分析算法,如PageRank和单源最短路径。 8. **Spark Shell**:Spark自带的交互式Shell允许用户直接在命令行中探索和测试...

    Graph Algorithms Practical Examples in Apache Spark and Neo4j

    常见的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径搜索、连通分量查找等。 2. Apache Spark中的图处理:Apache Spark是一个快速的大数据处理框架,支持多种数据处理模式,其中GraphX是其提供的...

    Apache Spark源码剖析

    GraphX提供了图处理API,允许用户定义图的顶点和边,以及对图进行各种操作,如PageRank和最短路径算法。源码分析将揭示GraphX如何抽象图操作,并在Spark的分布式环境中高效执行。 总的来说,深入Apache Spark的源码...

Global site tag (gtag.js) - Google Analytics