我在Hive中有两个字符串数组,如
{'value1','value2','value3'}
{'value1', 'value2'}
我想合并没有重复的数组,结果:
{'value1','value2','value3'}
我如何在蜂巢中做到这一点?
答案 0 :(得分:6)
原生解决方案可能是:
SELECT id, collect_set(item)
FROM table
LATERAL VIEW explode(list) lTable AS item
GROUP BY id;
首先使用lateralview进行爆炸,然后使用collect_set删除重复项。
答案 1 :(得分:5)
你需要一个UDF。 Klout在包下有一堆开源HivUDFS brickhouse。这是github link。他们拥有一堆完全符合您目的的UDF。 下载,构建和添加JAR。这是一个例子
CREATE TEMPORARY FUNCTION combine AS 'brickhouse.udf.collect.CombineUDF';
CREATE TEMPORARY FUNCTION combine_unique AS 'brickhouse.udf.collect.CombineUniqueUDAF';
select combine_unique(combine(array('a','b','c'), array('b','c','d'))) from reqtable;
OK
["d","b","c","a"]