【问题标题】:How to combine multiple maps in Hive?如何在 Hive 中合并多个地图?
【发布时间】:2018-06-18 18:11:17
【问题描述】:

是否有一个 Hive UDF 可以创建具有唯一值的地图? 例如:

col_1 | col_2
-------------
a      |   x
a      |   y
b      |   y
b      |   y
c      |   z
c      |   NULL
d      |   NULL

这应该返回一个如下的地图

{ a : [x,y], b : [y], c:[z] }

我正在寻找类似于 presto 的 multimap_aggfunction

【问题讨论】:

  • 你需要输出一行吗?

标签: hive hiveql


【解决方案1】:

使用 collect_set 删除每个 col_1 的重复 col_2,然后在此输出上使用 map

select map(col_1,uniq_col_2)
from (select col_1,collect_set(col_2) as uniq_col2
      from tbl
      where col_2 is not null
      group by col_1
     ) t

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-17
    • 2017-03-09
    • 1970-01-01
    • 2012-03-21
    • 2023-03-06
    相关资源
    最近更新 更多