将Hive Map数据对象分解为长格式

时间:2017-11-21 07:37:39

标签: hadoop hive keyvaluepair

我在表中有一个映射数据类型,其中包含相当多的键值(10-30)。当我爆炸键值时,我得到以下内容:

SELECT id, key,value
FROM tbl1
lateral view explode(map_field) feature_cols

结果:

id, key1, value1
id, key2, value2
id, key3, value3

但是,我想看看:

id, key1, key2, key3
1, value1, valu2, value3

是否有任何命令可以生成我想要的格式,或者是否有任何命令将爆炸输出转换为我想要的长格式?

1 个答案:

答案 0 :(得分:2)

我们需要在横向视图爆炸后将列转换为行。您可以像下面所述编写查询。

Select 
id, 
 Case when key=key1 then value1 as      key1,
Case when key=key2 then value2 as key2,
Case when key=key3 then value3 as key3
From 

(SELECT id,key,value FROM tbl1 lateral view explode(map_field)feature_cols)temp