数组与Hive相交

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)

我怎么能在蜂巢中做到这一点?

Adr*_*chi 6

原生解决方案可能是:

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删除重复项.


say*_*pta 5

你需要一个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)