【问题标题】:Hive Aggregate function for merging arrays用于合并数组的 Hive 聚合函数
【发布时间】:2018-01-09 23:14:11
【问题描述】:

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

key int,
value ARRAY<int>

现在这是我要运行的 SQL:

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

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

干杯, 克

【问题讨论】:

    标签: hiveql hive-udf


    【解决方案1】:

    没有 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;
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-24
        • 1970-01-01
        • 2015-02-14
        • 1970-01-01
        • 2017-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多