5

我需要在 HiveSQL 的 GROUP BY 中合并数组。表架构是这样的:

key int,
value ARRAY<int>

现在这是我要运行的 SQL:

SELECT key, array_merge(value)
FROM table_above
GROUP BY key

如果这个 array_merge 函数只保留唯一值,那会更好,但不是必须的。

干杯,K

4

2 回答 2

5

没有 UDAF 可以执行这种操作。以下查询应该会产生相同的结果而没有太多开销(继续运行一个 map 和一个 reduce 操作)删除重复项

select key, collect_set(explodedvalue) from (
  select key, explodedvalue from table_above lateral view explode(value) e as explodedvalue
) t group by key;
于 2018-01-10T02:36:10.800 回答
0

这里有一段时间的答案,但以防其他人偶然发现这个;Brickhousecombine_unique udf可能是您正在寻找的东西(repo 有关于如何开始使用他们的 UDF 的说明)。

语法与问题中提出的相同:

SELECT key, combine_unique(value)
FROM table_above
GROUP BY key
于 2021-06-25T16:31:52.990 回答