2016-03-22 9 views
0

例えば、交差点Hiveで2つの配列の交点と共用体を計算する方法は?

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

["B"] 

を返す必要がありますし、組合

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

は何

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

を返す必要がありますがHiveでこれを行うには?ハイブのドキュメントをチェックしましたが、これを行うための関連情報は見つかりませんでした。

+0

'select array(" A "、" B ")UNION ALL select array(" B "、" C "))'を試しましたか? –

+0

[Array intersect Hive]の複製があります(http://stackoverflow.com/questions/21578477/array-intersect-hive) –

答えて

2

問題解決方法はこちらです。 githubLinkに行くと、多くのudfsがkloutによって作成されています。 JARをダウンロードして作成し、ハイブに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

上記のリンクにある正しい機能は、[brickhouse.udf.collect.ArrayIntersectUDF](https :intersect_array(array1、array2、...) 'と' [array1、array2、...]として使用することができます://github.com/klout/brickhouse/blob/master/src/main/java/brickhouse/udf/collect/ArrayIntersectUDF.java) array_union(array1、array2 ,.)として 'brickhouse.udf.collect.ArrayUnionUDF](https://github.com/klout/brickhouse/blob/master/src/main/java/brickhouse/udf/collect/ArrayUnionUDF.java)を呼び出します。 ..) ' –