用于合并数组的Hive Aggregate函数

时间:2018-01-09 23:14:12

标签: hiveql hive-udf

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

key int,
value ARRAY<int>

现在这里是我想要运行的SQL:

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

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

干杯, ķ

2 个答案:

答案 0 :(得分:2)

没有UDAF来执行这种操作。以下查询应该导致相同而没有太多开销(继续运行一个映射和一个reduce操作)删除重复

select key, collect_set(explodedvalue) from (
  select key, explodedvalue from table_above lateral view explode(value) e as explodedvalue
) t group by key;

答案 1 :(得分:0)

这里已经有一段时间了,但以防万一其他人偶然发现; combine_uniqueBrickhouse udf 可能就是您正在寻找的(该存储库提供了有关如何开始使用其 UDF 的说明)。

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

guard let url = URL(string: "https://amiiboapi.com/api/") else {
    fatalError("Invalid URL")
}

var publisher = URLSession.shared.dataTaskPublisher(for: url)
    .receive(on: RunLoop.main)
    .map(\.data)
    .decode(type: AmiiboList.self, decoder: JSONDecoder())
    .sink(receiveCompletion: { completion in
        if case .failure(let err) = completion {
            print("Failed with error \(err)")
        }
    }, receiveValue: { value in
        print("Received \(value)")
        //        print(" Received \(value.amiibo[0].release)")
    })