Вершины с различными свойствами в GraphX - PullRequest
0 голосов
/ 07 июня 2018

Я новичок в 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 голосов
/ 07 июня 2018

Использовать сопоставление с образцом для типа вершины из файла.Предполагая, что возможны два типа «song» и «billboard»:

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)
}
...