Spark GraphX是Apache Spark的图形计算框架,它可以用于处理大规模图形和图形分析。它是一个高性能的分布式图形处理系统,可以在集群上运行,并且可以使用Spark的内存管理和数据并行性来加快处理速度。GraphX使用RDDs(可分区数据集)来表示图形和关系,并提供了一套高性能的API来执行各种图形转换和分析。
GraphX API包含了一些有用的函数,可以帮助开发人员快速实现各种图形转换和分析。例如:PageRank、Triangle Counting、Connected Components、Label Propagation、SVD++ 等。此外,GraphX还允许开发人员使用Pregel API来定义自己的图形迭代函数。Pregel API是一个非常强大的API,它允许开发人员使用MapReduce风格的API来定义自己的图形迭代函数。
val graph = GraphLoader.edgeListFile(sc, "data/graphx/followers.txt") val ranks = graph.pageRank(0.0001).vertices ranks.collect.foreach(println)
假定我们想从一些文本文件中构建一个图,限制这个图包含重要的关系和用户,并且在子图上运行page-rank,最后返回与top用户相关的属性。可以通过如下方式实现。
// Connect to the Spark cluster
val sc = new SparkContext("spark://master.amplab.org", "research")
// Load my user data and parse into tuples of user id and attribute list
val users = (sc.textFile("graphx/data/users.txt")
.map(line => line.split(",")).map( parts => (parts.head.toLong, parts.tail) ))
// Parse the edge data which is already in userId -> userId format
val followerGraph = GraphLoader.edgeListFile(sc, "graphx/data/followers.txt")
// Attach the user attributes
val graph = followerGraph.outerJoinVertices(users) {
case (uid, deg, Some(attrList)) => attrList
// Some users may not have attributes so we set them as empty
case (uid, deg, None) => Array.empty[String]
}
// Restrict the graph to users with usernames and names
val subgraph = graph.subgraph(vpred = (vid, attr) => attr.size == 2)
// Compute the PageRank
val pagerankGraph = subgraph.pageRank(0.001)
// Get the attributes of the top pagerank users
val userInfoWithPageRank = subgraph.outerJoinVertices(pagerankGraph.vertices) {
case (uid, attrList, Some(pr)) => (pr, attrList.toList)
case (uid, attrList, None) => (0.0, attrList.toList)
}
println(userInfoWithPageRank.vertices.top(5)(Ordering.by(_._2._1)).mkString("n"))
Spouts你将在本章了解到 spout 作为拓扑入口和它的容错机制相关的最常见的设计策略。可靠的消息 VS 不可靠的消息在设计拓扑结构...
STARTS WITH, ENDS WITH, CONTAINSNeo4j 备忘单,包含入门资源和有关如何使用 Cypher 查询数据库的信息。 开始Neo4j 入门Neo4j ...
MongoDB sort()方法 在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 ...
描述条件操作符用于比较两个表达式并从mongoDB集合中获取数据。在本章节中,我们将讨论如何在MongoDB中使用条件操作符。MongoDB...
在本章中,我们将了解如何从Access导出数据。数据导出实际上与导入数据相反。在导入数据时,我们从Access中提取其他格式的数据,...