顶点属性继承 – Graphx Scala Spark

—编辑—

我的主要问题是我不理解Graphx文档中给出的这一段:

在某些情况下,可能需要在同一图表中具有不同属性类型的顶点.这可以通过继承来完成.例如,要将用户和产品建模为二分图,我们可能会执行以下操作:

class VertexProperty()
case class UserProperty(val name: String) extends VertexProperty
case class ProductProperty(val name: String, val price: Double) extends VertexProperty
// The graph might then have the type:
var graph: Graph[VertexProperty, String] = null

在上面的例子中给出了每个UserProperty和ProductProperty的RDD以及EdgeProperty的RDD,如何创建Graph [VertexProperty,String]类型的图形.
我正在寻找一个例子.

最佳答案 这将帮助您创建二分图,其中vertex属性将帮助您了解不同的类类别.

//高级接口或VertexProperty

trait Node {   def getVertexID : Long  }

class UserNode(sID: String, sname : String, sAge) extends Node with Serializable { }

class ProductNode(sID: String, sNO : String, sdoe : String) extends Node with Serializable{ }

//数据加载

val users: RDD[Node]  = sc.textFile("users.txt")
                                 .map { row =>  val cols = row.split(",")
                                         ( new UserNode(cols(0), cols(1), cols(2))
                                  }

val products: RDD[Node]  = sc.textFile("products.txt")
                                 .map { row =>  val cols = row.split(",")
                                        ( new ProductNode(cols(0), cols(1), cols(3)))
                                }

//加入两个RDD

 val nodes : RDD[Node] = users.++(products) 
点赞