2016-03-22 22 views
0

,Hive'daki iki dizinin kesişme noktalarını ve birleşimlerini nasıl hesaplarsınız? Örneğin

select union(array("A","B"), array("B","C")) 

["A","B","C"] 

dönmelidir

select intersect(array("A","B"), array("B","C")) 

["B"] 

ve birliği dönmelidir kavşak nedir Bunu Kovan'da yapmanın en iyi yolu? Kovan belgelerini kontrol ettim, ancak bunun için ilgili herhangi bir bilgiyi bulamıyorum.

+0

Dizi seçmeyi denediniz mi ("A", "B") UNION TÜM seçim dizisi ("B", "C")) '? –

+0

[Array kesiştiği yer Hive] (http://stackoverflow.com/questions/21578477/array-intersect-hive) –

cevap

2

Sorununuzun çözümü burada. githubLink adresine gidin, klout tarafından çok sayıda udfs oluşturulmuştur. İndirin, JAR'ı kesin ve kovandaki JAR'ı ekleyin. Örnek

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

Yukarıdaki bağlantıda bulunan doğru işlev [brickhouse.udf.collect.ArrayIntersectUDF] olmalıdır (https : //github.com/klout/brickhouse/blob/master/src/main/java/brickhouse/udf/collect/ArrayIntersectUDF.java); intersect_array (dizi1, dizi2, ...) 've [ brickhouse.udf.collect.ArrayUnionUDF] (https://github.com/klout/brickhouse/blob/master/src/main/java/brickhouse/udf/collect/ArrayUnionUDF.java) olarak array_union (dizi1, dizi2,. ..) ' –

İlgili konular