假设我查询:
select explode(map_column_name) as exploded from table_name
我收到此错误:
AS子句中的别名数与数量不匹配 由UDTF输出的列,预计有2个别名,但得到1
我用Google搜索了错误,并且知道要给多个别名,我们使用堆栈函数.. 如何使用堆栈功能以及爆炸功能,以便最终爆炸地图数据类型,同时也提供2个别名?
请耐心等待我,因为我是初学者并且正在学习Hive。
答案 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 |
+-------+---------+