老外论坛找到一个最短路径和中间节点的算法
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")) } }
相关推荐
2. **Shortest Paths**: GraphX支持寻找图中最短路径的算法,例如单源最短路径(Dijkstra算法)和所有对最短路径。 3. **Triangle Counting**: 计算图中三角形的数量,可用于社区检测和社交网络分析。 4. **...
Shortest Path则是寻找两个节点之间最短路径的算法,常见于路由问题和社交网络分析。通过Spark GraphX,这些算法可以在分布式环境下高效运行,处理亿级甚至十亿级的节点和边。 另外,书中可能还会涵盖图的遍历策略...
### Spark-GraphX框架下的大规模加权图最短路径查询 #### 摘要与背景 最短路径问题一直是计算机科学的重要研究课题,在社交网络分析、交通运输规划等多个领域都有着广泛的应用。随着数据量的爆炸性增长,传统的...
Spark GraphX源码分析: 在大数据时代背景下,图计算成为了一个重要的研究领域,而Apache Spark的GraphX库是处理大规模图数据的关键工具之一。GraphX在Spark的基础上实现了图并行计算,并提供了丰富的图操作接口。...
4. **图遍历与迭代**:GraphX支持深度优先搜索(DFS)、广度优先搜索(BFS)等图遍历方法,这些方法在寻找特定模式、检测环路或者查找最短路径时非常有用。此外,Pregel API允许用户自定义迭代计算,适应各种图处理...
《基于Spark-Graphx的大规模用户图计算和应用》是一份深入探讨如何使用Apache Spark的GraphX组件进行大规模用户图计算的完整高清资料。Spark作为一个快速、通用且可扩展的数据处理框架,其GraphX模块为处理图形数据...
例如,PageRank算法可以用来找出网络中的重要节点,ShortestPaths可以找到两个节点之间的最短路径,而TriangleCounting则有助于发现图中的社区结构。 在使用GraphX时,确保你的环境已经配置好CDH集群(如描述中提到...
本项目“PregelShortestPath”是用 Scala 实现的,旨在利用 Spark 和 GraphX 来求解图中的最短路径问题。以下是对这些技术及其应用的详细解释。 **Pregel(Parallel Graph Processing System)** 是 Google 提出的...
Graphx的实现允许在大规模图数据集上快速找到最短路径,提高效率。 Graphx的应用场景广泛,包括但不限于社交网络分析、推荐系统、网络爬虫的链接分析、欺诈检测、社区发现等。在社交网络中,可以分析用户关系的模式...
本篇文章将深入探讨如何利用Spark GraphX实现图算法中的“最短路径”问题,主要涉及两种不同的实现方法。 一、Pregel算法实现 1. Pregel简介:Pregel是一种由Google提出的图并行计算模型,灵感来源于Bulk ...
2. **图分析**:计算图的属性,如节点度数、聚类系数、最短路径等。 3. **图算法**:实施PageRank、三角计数、社区检测等算法,以理解图的结构特性。 4. **图转换**:对图进行操作,如添加、删除边,或者修改节点...
- **Spark GraphX**:这是Apache Spark中的一个库,专门用于图计算。它提供了一种简洁高效的方式来处理大规模图数据,并支持多种图算法,包括最短路径算法。 ### 总结 本文介绍了最短路径算法的基本概念及其常见...
3. **图算法**:GraphX提供了多种内置的图算法,如PageRank、ShortestPaths、TriangleCount等,用于计算节点的重要性、寻找最短路径和检测三元组。 4. **属性图**:GraphX支持属性图,这意味着每个顶点和边都可以有...
Spark GraphX是一个专门用于图计算的模块,它允许用户轻松地执行复杂的图操作,比如PageRank算法、最短路径算法等。通过学习这部分内容,读者可以掌握如何使用GraphX进行图数据的高效分析。 ### 高速数据流处理 在...
在Spark 2.0.2中,GraphX提供了图的强一致视图,以及各种图算法,如PageRank和单源最短路径,适用于社交网络分析、推荐系统等领域。 总的来说,Spark 2.0.2 API 为开发者提供了一个全面的工具箱,涵盖了大数据处理...
在SparkGraphX中,可以通过PregelAPI实现最短路径算法。这种算法基于BSP模型,通过迭代的方式逐步更新顶点的距离,直到找到所有顶点之间的最短路径。 **2.6 GraphX实例** 本节提供了具体的GraphX使用案例,包括...
实验1要求使用GraphX的Pregel API实现单源最短路径(SSSP)算法,这需要对Vertex和Edge RDDs以及GraphLoader边缘列表文件的预处理有深入了解。 实验2的重点是PageRank算法的应用,用于解决Wikipedia投票选举问题。...
7. **GraphX(图计算)**:GraphX提供了图数据处理的支持,它构建在RDD之上,提供了图的操作和分析算法,如PageRank和单源最短路径。 8. **Spark Shell**:Spark自带的交互式Shell允许用户直接在命令行中探索和测试...
常见的图算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径搜索、连通分量查找等。 2. Apache Spark中的图处理:Apache Spark是一个快速的大数据处理框架,支持多种数据处理模式,其中GraphX是其提供的...
GraphX提供了图处理API,允许用户定义图的顶点和边,以及对图进行各种操作,如PageRank和最短路径算法。源码分析将揭示GraphX如何抽象图操作,并在Spark的分布式环境中高效执行。 总的来说,深入Apache Spark的源码...