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作爲字符串的序列或數組而不是行對象。 –
這個工作嗎? –
我已經更新了答案 –