GraphX提供了几种方式从RDD或者磁盘上的顶点和边集合构造图。默认情况下,没有哪个图构造者为图的边重新分区,而是把边保留在默认的分区中(例如HDFS中的原始块)。Graph.groupEdges⇒ED):Graph[VD,ED])需要重新分区图,因为它假定相同的边将会被分配到同一个分区,所以必须在调用groupEdges之前调用Graph.partitionBy:Graph [VD,ED])。代码如【例4-30】所示。
【例4-30】图的构造。
GraphLoader.edgeListFile:Graph[Int,Int])提供了一个方式,从磁盘上的边列表中加载一个图。它解析如下形式(源顶点ID,目标顶点ID)的连接表,跳过以“#”开头的注释行。
GraphLoader.edgeListFile:Graph[Int,Int])提供了一个方式,从磁盘上的边列表中加载一个图。它解析如下形式(源顶点ID,目标顶点ID)的连接表,跳过以“#”开头的注释行。
GraphLoader.edgeListFile:Graph[Int,Int]从指定的边创建一个图,自动地创建边提及的所有顶点。所有的顶点和边的属性默认都是1。canonicalOrientation参数允许重定向正方向(即源顶点ID小于目标顶点ID)的边,这在connected components算法中需要用到。minEdgePartitions参数指定生成的边分区的最少数量。边分区可能比指定的分区更多,例如,一个HDFS文件包含更多的块。
GraphLoader.edgeListFile:Graph[Int,Int]从指定的边创建一个图,自动地创建边提及的所有顶点。所有的顶点和边的属性默认都是1。canonicalOrientation参数允许重定向正方向(即源顶点ID小于目标顶点ID)的边,这在connected components算法中需要用到。minEdgePartitions参数指定生成的边分区的最少数量。边分区可能比指定的分区更多,例如,一个HDFS文件包含更多的块。
【例4-31】minEdgePartitions应用示例。(www.xing528.com)
个参数列表包含配置参数初始消息、最大迭代数、发送消息的边的方向(默认是沿out边)。第二个参数列表包含用户自定义的函数用来接Graph.apply[VD,ED],RDD[Edge[ED]],VD)(ClassTag[VD],ClassTag[ED]):Graph[VD,ED])允许从顶点和边的RDD上创建一个图。重复的顶点可以任意地选择其中一个,在边RDD中而不是在顶点RDD中发现的顶点分配默认的属性。
Graph.fromEdges(ClassTag[VD],ClassTag[ED]):Graph[VD,ED])允许仅仅从一个边RDD上创建一个图,它自动地创建边包含的顶点,并为这些顶点分配默认的值。
Graph.fromEdgeTuples],VD,Option[PartitionStrategy])(ClassTag[VD]):Graph[VD,Int])允许仅仅从一个边元组组成的RDD上创建一个图,分配给边的值为1。它自动地创建边包含的顶点,并为这些顶点分配默认的值。它还支持删除边,为了删除边,需要传递一个以PartitionStrategy为参数的Some函数作为uniqueEdges参数例如“uniqueEdges=Some(PartitionStrategy.Random VertexCut)”。为了将相同的边分配到同一个分区,从而使它们可以被删除,必须需要有一个分区策略。
Graph.apply[VD,ED],RDD[Edge[ED]],VD)(ClassTag[VD],ClassTag[ED]):Graph[VD,ED])允许从顶点和边的RDD上创建一个图。重复的顶点可以任意地选择其中一个,在边RDD中而不是在顶点RDD中发现的顶点分配默认的属性。
Graph.fromEdges(ClassTag[VD],ClassTag[ED]):Graph[VD,ED])允许仅仅从一个边RDD上创建一个图,它自动地创建边包含的顶点,并为这些顶点分配默认的值。
Graph.fromEdgeTuples],VD,Option[PartitionStrategy])(ClassTag[VD]):Graph[VD,Int])允许仅仅从一个边元组组成的RDD上创建一个图,分配给边的值为1。它自动地创建边包含的顶点,并为这些顶点分配默认的值。它还支持删除边,为了删除边,需要传递一个以PartitionStrategy为参数的Some函数作为uniqueEdges参数例如“uniqueEdges=Some(PartitionStrategy.Random VertexCut)”。为了将相同的边分配到同一个分区,从而使它们可以被删除,必须需要有一个分区策略。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。