插入空的MAP

时间:2019-04-10 21:07:03

标签: sql hive

在任何地方都找不到。我有一个MAP类型的列,该列可能有也可能没有值。插入NULL会引发错误。插入map()会引发错误,因为它会插入一个空的map<string, string>,而我需要一个empty<int, int>。如何创建类型为<int, int>

的空映射

2 个答案:

答案 0 :(得分:0)

尝试如下创建空地图:

select map(cast(null as int), cast(null as int))

答案 1 :(得分:0)

尝试如下创建空的map<int, int>

> create temporary function map_remove_keys as 'brickhouse.udf.collect.MapRemoveKeysUDF';
> select map_remove_keys(map(0, 0), array(0));
+------+
| _c0  |
+------+
| {}   |
+------+

或使用UDAF(注意:这是一个聚合函数):

> create temporary function collect as 'brickhouse.udf.collect.CollectUDAF';
> select collect(cast(null as int), cast(null as int));
+------+
| _c0  |
+------+
| {}   |
+------+

作为比较:

> select map(cast(null as int), cast(null as int));
+--------------+
|     _c0      |
+--------------+
| {null:null}  |
+--------------+