Spark Graphx - 构建网络代码讲解

    xiaoxiao2021-03-25  105

    这几天在使用微博的数据来做一些分析,我用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)来进行关系图的创建也可以。通过这些讲解,希望可以帮到你。

    转载请注明原文地址: https://ju.6miu.com/read-22136.html

    最新回复(0)