【问题标题】:str_to_map returns map<string,string>. How to make it return map<string,int>?str_to_map 返回 map<string,string>。如何让它返回 map<string,int>?
【发布时间】:2016-11-27 00:04:16
【问题描述】:

我使用 str_to_map 作为:-

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

如你所见,它返回的是 map 类型的对象。我想要地图类型的对象。有什么出路吗?我们可以以某种方式将其类型转换为 map 吗?

【问题讨论】:

    标签: hive apache-spark-sql


    【解决方案1】:

    我盯着这个看了一会,并没有看到太多,但事实证明它很简单——只需使用cast

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

    【讨论】:

    • 因语法错误而失败:- FAILED: ParseException line 1:41 cannot identify input near 'map' '
    • 嗯,它在我认为等同于 HiveQL 的 Spark SQL 中对我来说工作得非常好......
    • 看起来不太相似,可能有细微差别
    【解决方案2】:

    你可以尝试使用map_remove_keysUDF:

    > 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  |
    +------+
    | {}   |
    +------+
    

    【讨论】:

      猜你喜欢
      • 2010-12-28
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多