如何在Hive中爆炸map数据类型或如何在Hive中提供多个别名

时间:2017-05-27 19:51:37

标签: hive hiveql

假设我查询:

select explode(map_column_name) as exploded from table_name 

我收到此错误:

  

AS子句中的别名数与数量不匹配   由UDTF输出的列,预计有2个别名,但得到1

我用Google搜索了错误,并且知道要给多个别名,我们使用堆栈函数.. 如何使用堆栈功能以及爆炸功能,以便最终爆炸地图数据类型,同时也提供2个别名?

请耐心等待我,因为我是初学者并且正在学习Hive。

1 个答案:

答案 0 :(得分:7)

使用默认列名称

select explode(map) from table_name

使用别名

select explode(map) as (mykey,myval) from table_name

<强>演示

使用默认列名称

select explode (map('A',1,'B',2,'C',3))
;
+-----+-------+
| key | value |
+-----+-------+
| A   |     1 |
| B   |     2 |
| C   |     3 |
+-----+-------+

使用别名

select explode (map('A',1,'B',2,'C',3)) as (mykey,myvalue)
;
+-------+---------+
| mykey | myvalue |
+-------+---------+
| A     |       1 |
| B     |       2 |
| C     |       3 |
+-------+---------+