【摘要】:SparkGraphX的架构共分为三层。GraphOps类扩展了Graph类的功能,结合Scala语言本身的隐式转换功能,Graph对象可以直接调用GraphOps类中的方法。在Spark GraphX的接口实现层里,还有Spark GraphX的PartitionStrategy,在后面的小节里我们会结合源码讲解四个主要的分区策略。
SparkGraphX的架构共分为三层(如图8-6所示)。
(1)模型层:在Spark GraphX中基于Spark的RDD实现了Pregel计算模型。
(2)接口实现层:Graph类是Spark GraphX的核心类,在Graph类内部提供了val verti-ces:VertexRDD[VD]、val edges:EdgeRDD[ED]、val triplets:RDD[EdgeTriplet[VD,ED]]这三个属性对VertexRDD、EdgeRDD、RDD[EdgeTriplet[VD,ED]]三个基本数据类型进行引用。GraphImpl类是Graph类的具体实现子类,在GraphImpl中override(覆写)了Graph的很多方法,同时提供了apply方法用来简化Graph的创建。GraphOps类扩展了Graph类的功能,结合Scala语言本身的隐式转换功能,Graph对象可以直接调用GraphOps类中的方法。在Spark GraphX的接口实现层里,还有Spark GraphX的PartitionStrategy(分区策略),在后面的小节里我们会结合源码讲解四个主要的分区策略。
(3)图算法层:在Spark GraphX中基于Pregel模型实现了一些常用的图算法。包括PageRank、SVDPlusPlus、TriangleCount、ConncetedComponents和StronglyConnected Compo-nents等。(www.xing528.com)
图8-6 Spark GraphX架构图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。