Adr*_*chi 3 apache arrays hive intersect
我在Hive中有两个字符串数组
{'value1','value2','value3'}
{'value1', 'value2'}
Run Code Online (Sandbox Code Playgroud)
我想合并没有重复的数组,结果:
{'value1','value2','value3'}
Run Code Online (Sandbox Code Playgroud)
我怎么能在蜂巢中做到这一点?
原生解决方案可能是:
SELECT id, collect_set(item)
FROM table
LATERAL VIEW explode(list) lTable AS item
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)
首先使用lateralview进行爆炸,然后使用collect_set删除重复项.
你需要一个UDF.Klout在包砖厂下有一堆开源HivUDFS.这是github链接.他们拥有一堆完全符合您目的的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"]
Run Code Online (Sandbox Code Playgroud)