2014-02-05 148 views
3

我有串的兩個數組在蜂巢狀陣列相交蜂巢

{'value1','value2','value3'} 
{'value1', 'value2'} 

我想不重複的合併數組,結果是:

{'value1','value2','value3'} 

我怎麼能在蜂巢做呢?

+0

爲什麼這是用java標記的? –

回答

5

您將需要一個UDF。 Klout在包裝 brickhouse下有一堆開源的HivUDFS。這裏是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"] 
+1

還有「intersect_array」,這得到實際的元件中常見(「B」,「C」) 薩彥,非常感謝傳播有關Brickhouse字!!! 我希望你覺得它有用。 –

+0

感謝您的精彩套餐。它有一些非常棒的功能。我試着用combine_unique。它不接受2個數組。因此,此解決方案。維基需要修改 –

5

原生溶液可能是因爲:

SELECT id, collect_set(item) 
FROM table 
LATERAL VIEW explode(list) lTable AS item 
GROUP BY id; 

與lateralview首先爆炸,並且下一組通過並用collect_set刪除重複。