GraphX中的图构造器

  GraphX 提供了几种从 RDD 或磁盘上的顶点和边的集合构建图的方法。 默认情况下,所有图构建器都不会重新划分图的边; 相反,边会留在它们的默认分区中(例如它们在 HDFS 中的原始块)。Graph.groupEdges 要求对图进行重新分区,因为它假定相同的边将位于同一分区上,因此您必须在调用之前调用 Graph.partitionBy 组边。

object GraphLoader {
  def edgeListFile(
      sc: SparkContext,
      path: String,
      canonicalOrientation: Boolean = false,
      minEdgePartitions: Int = 1)
    : Graph[Int, Int]
}

  GraphLoader.edgeListFile 提供了一种从磁盘上的边列表加载图形的方法。 它解析以下形式的(源顶点 ID,目标顶点 ID)对的邻接列表,跳过以 # 开头的注释行:

# 例如
2 1
4 1
1 2

  它从指定的边创建一个 Graph,自动创建边连接提到的任何顶点。 所有顶点和边属性默认为 1。canonicalOrientation 参数允许在正方向 (srcId < dstId) 上重新定向边,这是连通分量算法所要求的。 minEdgePartitions 参数指定要生成的最小边分区数; 例如,如果 HDFS 文件具有更多块,则可能存在比指定更多的边缘分区。

object Graph {
  def apply[VD, ED](
      vertices: RDD[(VertexId, VD)],
      edges: RDD[Edge[ED]],
      defaultVertexAttr: VD = null)
    : Graph[VD, ED]

  def fromEdges[VD, ED](
      edges: RDD[Edge[ED]],
      defaultValue: VD): Graph[VD, ED]

  def fromEdgeTuples[VD](
      rawEdges: RDD[(VertexId, VertexId)],
      defaultValue: VD,
      uniqueEdges: Option[PartitionStrategy] = None): Graph[VD, Int]

}

  Graph.apply 允许从顶点和边的 RDD 创建图。 重复的顶点被任意挑选,并且在边 RDD 中找到的顶点而不是顶点 RDD 被分配默认属性。

  Graph.fromEdges 允许仅从边的 RDD 创建图,自动创建边提到的任何顶点并为其分配默认值。

  Graph.fromEdgeTuples 允许仅从边元组的 RDD 创建图,为边分配值 1,并自动创建边提到的任何顶点并为其分配默认值。 它还支持去重边缘; 要进行重复数据删除,请将 PartitionStrategy 的某些部分作为 uniqueEdges 参数传递(例如,uniqueEdges = Some(PartitionStrategy.RandomVertexCut))。 分区策略对于在同一分区上共置相同的边缘是必要的,以便可以对它们进行重复数据删除。

 

posted @ 2022-03-03 16:20  干了这瓶老干妈  阅读(161)  评论(0编辑  收藏  举报
Live2D