0
我在一个蜂巢表已经列:如何将Hive中的Array [Struct [String,String]]列类型投射到Array [Map [String,String]]?
列名:过滤器
数据类型:
|-- filters: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- name: string (nullable = true)
| | |-- value: string (nullable = true)
我想通过它的相应的名称得到此列的值。
我做了什么至今:
val sdf: DataFrame = sqlContext.sql("select * from <tablename> where id='12345'")
val sdfFilters = sdf.select("filters").rdd.map(r => r(0).asInstanceOf[Seq[(String,String)]]).collect()
Output: sdfFilters: Array[Seq[(String, String)]] = Array(WrappedArray([filter_RISKFACTOR,OIS.SPD.*], [filter_AGGCODE,IR]), WrappedArray([filter_AGGCODE,IR_]))
注:铸造于Seq因为WrappedArray到地图的转换是不可能的。
接下来要做什么?
我想获得值b和c作为字符串的序列或数组而不是行对象。 –
这个工作吗? –
我已经更新了答案 –