• 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))。 分区策略对于在同一分区上共置相同的边缘是必要的,以便可以对它们进行重复数据删除。

  • 相关阅读:
    zabbix监控windows案例
    Ansible自动化运维工具-上
    Nagios监控的部署与配置
    ELK+Redis+Nginx服务数据存储以及Nginx日志的收集
    ELK5.3日志分析平台&部署
    Centos7X部署Zabbix监控
    LVS+Keepalived负载均衡
    Nginx+tomcat负载均衡
    smokeping
    Err.number错误号和可捕获的 Microsoft access 数据库引擎和 DAO错误说明
  • 原文地址:https://www.cnblogs.com/Ao0216/p/15960445.html
Copyright © 2020-2023  润新知