Spark Graphx - 构建网络代码讲解

这几天在使用微博的数据来做一些分析,我用Spark Graphx来进行微博转发网络的建立。新手刚开始学习Spark Graphx时,可能不会使用Spark Graphx来进行关系网络的建立。下面根据官网的例子来进行讲解.下面是官网的代码:

val users: RDD[(VertexId, (String, String))] =
  sc.parallelize(Array((3L, ("rxin", "student")), (7L, ("jgonzal", "postdoc")),
                       (5L, ("franklin", "prof")), (2L, ("istoica", "prof"))))
// Create an RDD for edges
val relationships: RDD[Edge[String]] =
  sc.parallelize(Array(Edge(3L, 7L, "collab"),    Edge(5L, 3L, "advisor"),
                       Edge(2L, 5L, "colleague"), Edge(5L, 7L, "pi")))
// Define a default user in case there are relationship with missing user
val defaultUser = ("John Doe", "Missing")
// Build the initial Graph
val graph = Graph(users, relationships, defaultUser)

含义解释

在上面的代码,首先大家可以看到users,users代表的是关系网络中的点的集合。可以把它理解为关系图的点。比如一个点 (3L, (“rxin”, “student”)),其中3L代表的是这个节点的id号,后面(“rxin”, “student”)这个代表这个点的属性。所以users代表是点的集合,你在写你自己的网络的时候,首先应该先建立一个RDD来表示你的网络中的节点信息。可以按照上面类似代码来进行建立,如果是从外部数据源来进行节点集合的RDD创建的话,那么可以用map,flatmap函数来进行转换。

下面的relationships RDD就是点和点之间的连接边,第三个之表示的是这条有向边的属性。最后的通过Graph来记性关系图的建立。第三个defaultUser代表默认值,如果不需要话,直接 Graph(users, relationships)来进行关系图的创建也可以。通过这些讲解,希望可以帮到你。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Spark GraphX是一个基于Spark的图计算框架,它提供了一种高效的方式来构建和操作大规模图数据。GraphX支持两种类型的图:有向图和无向图。它还提供了一些常用的图算法,如PageRank、连通性组件、最短路径等。GraphX还支持图的顶点和边的属性,这使得用户可以在图上进行更加复杂的计算。GraphX的API简单易用,用户可以使用Scala或Java编写代码来操作图数据。 ### 回答2: Spark GraphX是在Apache Spark架构中建构图及进行图分析的分布式图计算框架。该框架提供了大量便利功能,例如加强的API,能够进行动态图计算和实时数据流的图计算,在几乎所有处理工作中都具有应用价值。Spark GraphX的主要特点是能够对图数据进行简单建构、容易且迅捷的处理图数据、高效支持分布式图算法,一般用于解决当今的具有复杂关系的图问题,如社交网络、图像处理、基因网络和生产制造业中相关宏观或微观的数据。 图数据构建Spark GraphX中最主要的对象是Vertex和Edge,Vertex对应图中的顶点,Edge对应图中的边。可以通过Seq(顺序集合,如数组)或RDD(分布式数据集)的形式将Vertex和Edge信息导入Spark GraphX。Graph对象则代表完整的图信息,Graph的建构要基于RDD或Seq形式的Vertex和Edge信息,可以使用该Graph对象进行各种基础的图算法操作。 图算法操作:Spark GraphX提供了丰富的API能够支持多种图算法,例如PageRank,Shortest Paths,Triangles counting等等,同时也可以自定义一些图算法操作来满足具体的应用场景。具体来说,该框架能够实现图的多种转换和操作,包括图的顶点属性和边属性的修改、顶点和边的过滤、顶点和边的分区和排序、计算顶点度数、获取图的最大点、定点的迭代计算等等。 Spark GraphX能够通过图处理来实现数据降维、特征提取、关系挖掘和分析等多种图算法应用。该框架性能较高且易于扩展,能够快速实现大规模图计算,并且可以快速处理来自各种数据来源的图数据。Spark GraphX的高效、精简和灵活性将为我们的图分析应用提供有力的支撑。 ### 回答3: Spark GraphX是一个基于Apache Spark的分布式图计算库,它提供了创建、操作和分析图的API。GraphX使用图作为数据模型,图是一种可以表示节点和节点之间关系的数据结构。图可以用来描述复杂的交互关系,比如社交网络、电信网络、交通网络等等。GraphX可以用来处理大规模的图,它可以自动将图分成多个分区,使得每个分区都可以在不同的机器上进行计算,从而实现高效的分布式处理。 构建GraphX支持两种类型的图:有向图和无向图。有向图中每个边都是有方向的,表示一种单向关系。无向图中每个边都是没有方向的,表示一种相互关联的关系GraphX中的图是由边和顶点组成的,边是两个顶点之间的连接,而顶点是图中的节点。我们可以使用GraphX的API来创建和构建一个图,首先需要创建两个RDD:顶点RDD和边RDD。顶点RDD保存图中所有的顶点,每个顶点有一个唯一的标识符和一个属性值。边RDD保存图中所有的边,每条边都由源顶点、目标顶点和一个属性值组成。 相关操作 GraphX提供了许多用来操作图的API,可以对图进行各种计算和分析。以下是GraphX支持的一些操作: 1. 度数计算:计算每个顶点的度数(即与之相连的边的数量)。GraphX提供了inDegrees、outDegrees和degrees三个API来计算入度、出度和总度数。 2. 连通性计算:计算图中的连通组件,即将所有互相连通的顶点集合成一个连通图。GraphX提供了connectedComponents和stronglyConnectedComponents两个API来计算弱联通图和强联通图。 3. PageRank算法:PageRank算法是一种用于评估网页重要性的算法,也可以用来评估图中节点的重要性。GraphX提供了pageRank和staticPageRank两个API来计算PageRank。 4. 聚合操作:GraphX提供了更高级的聚合操作,可以对整个图进行聚合操作,如计算最短路径、最小生成树等等。 通过上述操作,可以对图进行各种计算和分析,并从中提取出我们需要的信息。GraphX在大规模图计算方面具有很好的性能和扩展性,可以广泛应用于社交网络、电信网络等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值