str_to_map返回map <string,string>。如何让它返回map <string,int>?

时间:2016-07-23 01:48:22

标签: hive apache-spark-sql

我使用str_to_map作为: -

hive> select str_to_map("A:1,B:1,C:1");
OK
{"C":"1","A":"1","B":"1"}

你可以注意到它返回的是map类型的对象&lt;字符串,字符串取代。我想要类型地图的对象。有什么出路吗?我们可以用某种方式对其进行类型化以映射&lt;字符串,整数&GT;

2 个答案:

答案 0 :(得分:0)

我凝视着它,环顾了一会儿,没有看到太多东西,但事实证明这很简单-只需使用cast

select cast(str_to_map("A:1,B:1,C:1") as map<string, int>)
-- {'A': 1, 'B': 1, 'C': 1}

答案 1 :(得分:0)

您可以尝试使用map_remove_keys UDF:

> add jar hdfs:///lib/brickhouse-0.7.1-SNAPSHOT.jar;
> create temporary function map_remove_keys as 'brickhouse.udf.collect.MapRemoveKeysUDF';
> select map_remove_keys(map("", 0), array(""));
+------+
| _c0  |
+------+
| {}   |
+------+