Как я могу запросить RDD со сложными типами, такими как карты/массивы? например, когда я писал этот тестовый код:
case class Test(name: String, map: Map[String, String])
val map = Map("hello" -> "world", "hey" -> "there")
val map2 = Map("hello" -> "people", "hey" -> "you")
val rdd = sc.parallelize(Array(Test("first", map), Test("second", map2)))
Я, хотя синтаксис бы что-то вроде:
sqlContext.sql("SELECT * FROM rdd WHERE map.hello = world")
или
sqlContext.sql("SELECT * FROM rdd WHERE map[hello] = world")
но я получаю
Невозможно получить доступ к вложенному полю типа MapType (StringType, StringType, true)
и
org.apache.spark.sql.catalyst.errors.package $TreeNodeException: неразрешенные атрибуты
соответственно.