マップ/配列などの複雑な型で 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: 未解決の属性
それぞれ。