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

Explode Hive Map data object into long format

我在 table 中有一个地图数据类型,其中包含相当多的键值 (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

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

我们需要在横向视图展开后将列转置为行。您可以如下所述编写查询。

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