У меня есть вершины с разными свойствами. Теперь я хочу отфильтровать те, у которых есть определенное значение свойства. Вот как выглядит мой код:
// Different property classes for different vertex
class VertexProperty()
case class Property1(val name: String, val servings: Int) extends VertexProperty
case class Property2(val description: String) extends VertexProperty
case class Property3(val name: String, val quantity: Double, val measurementUnit: String) extends VertexProperty
val vertexArray = Array(
(1L, Property1("propertyName",8)),
(2L, Property2("property description")),
(3L, Property3("", 1,"lb."))
)
val edgeArray = Array(
Edge(1L, 2L, "step1"),
Edge(1L, 3L, "step2")
)
val vertexRDD: RDD[(Long, VertexProperty)] = sc.parallelize(vertexArray)
val edgeRDD: RDD[Edge[String]] = sc.parallelize(edgeArray)
val graph: Graph[VertexProperty, String] = Graph(vertexRDD, edgeRDD)
Теперь я хочу отфильтровать вершины, у которых свойство Property2
и чье описание не пустое, пробовал такими способами:
Это не дает ожидаемого результата
graph.vertices.filter { case (id, (descrition)) => descrition !="" }.foreach{ case (id, (descrition)) => println(s"$descrition") }
Этот код не работает
graph.vertices.filter { case (id, Property2(descrition)) => descrition !=""}.foreach{ case (id, (descrition)) => println(s"$descrition") }