GraphX中具有不同属性的顶点

时间:2018-06-07 07:22:55

标签: scala apache-spark spark-graphx

我是GraphX的新手,我正在尝试为具有不同属性的图创建顶点。我有一个顶点具有Id,Type,SongName和其他具有Id,Type,Rank,Year的文件。它们在同一个文件中。不确定我是否必须分开它们。我创建了这个Vertex类:

class VertexProperty() extends Serializable
case class SongProperty(val vertexType: String, val songName: String) extends VertexProperty
case class BillboardProperty(val vertexType: String, val rank: Int, val year: Int) extends VertexProperty

我正在尝试在这里实施它,但不太确定我是如何或如果我在正确的轨道上。有什么帮助吗?

val BillboardSong: RDD[(VertexId, VertexProperty)] = sc.textFile(vertexBillboardSong).map {
  line =>
    val row = line.split(",")

    (row(0).toLong, row(2))
}

1 个答案:

答案 0 :(得分:0)

对文件中的顶点类型使用模式匹配。假设两种可能的类型是" song"和"广告牌":

val BillboardSong: RDD[(VertexId, VertexProperty)] = sc.textFile(vertexBillboardSong).map{ 
  line =>
    val row = line.split(",")
    val id = row(0).toLong
    val vertexType = row(1)

    val prop = vertexType match {
      case "song" => SongProperty(vertexType, row(2))
      case "billboard" => BillboardProperty(vertexType, row(2).toInt, row(3).toInt)
    }
    (id, prop)
}