티스토리 뷰
반응형
hive 4.x 부터 array 를 다루는 UDF 가 기본 포함되었다. array 에서 특정아이템을 빼거나, 합치거나 이런 기능을 기본적으로 사용가능하다는건데 문제는 azure 도 그렇고 아직 hive 3.x 에 하둡 3.x 버전대가 주류를 이루고 있어서 기본적으로 사용을 못하는게 함정이다.
다행히 github 에 있는 hive 4.x 에서 array 를 다루는 udf 클래스만 추출해서 빌드한걸 테스트해보니 hive 3 버전대에서도 문제없이 동작하는걸 확인했다.
빌드 / 다운로드
UDF 를 빌드하는 방법은 Azure 도큐먼트에 잘 정리되어있다. 나는 이 글을 참고하고 github 에서 관련된 udf 만 추출해서 빌드를 했다.
https://learn.microsoft.com/ko-kr/azure/hdinsight/hadoop/apache-hadoop-hive-java-udf
만약, 빌드된 jar 만 쓰고싶다면 이걸 다운로드 하자
사용방법
다운로드한 udf 를 hdfs 에 업로드하고, 다음과 같은 형태로 beeline 에서 add jar 후 관련된 클래스의 function 을 등록한다.
-- hdfs 에 업로드는 해줘야한다
ADD JAR hdfs://네임서비스명/user/유저명/hive3-array-udf.jar;
-- function 등록
CREATE TEMPORARY FUNCTION array_distinct as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayDistinct';
CREATE TEMPORARY FUNCTION array_except as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayExcept';
CREATE TEMPORARY FUNCTION array_intersect as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayIntersect';
CREATE TEMPORARY FUNCTION array_join as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayJoin';
CREATE TEMPORARY FUNCTION array_max as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayMax';
CREATE TEMPORARY FUNCTION array_min as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayMin';
CREATE TEMPORARY FUNCTION array_remove as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayRemove';
CREATE TEMPORARY FUNCTION array_slice as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArraySlice';
CREATE TEMPORARY FUNCTION array_union as 'org.apache.hadoop.hive.ql.udf.generic.GenericUDFArrayUnion';
추가된 해당 UDF 에 대한 내용은 기존에 작성한 사용예시 글을 참고하도록 하자.
2024.01.26 - [데이터처리/Hive] - [HIVE] hive 4.x 버전에 추가된 array 함수 8개 : 예제 포함
반응형
'데이터처리 > Hive' 카테고리의 다른 글
[MACRO] HIVE 에서 UDF 를 쓰지 않고, 수식을 간단하게 하는 방법 (1) | 2024.06.07 |
---|---|
[HIVE] Struct 타입의 일부값만 변경하는 UDF : set_value (2) | 2024.02.07 |
[HIVE] hive 4.x 버전에 추가된 array 함수 8개 : 예제 포함 (0) | 2024.01.26 |
[HIVE] brickhouse UDF 사용예제 - timeseries (1) | 2024.01.19 |
[HIVE] JSON 을 다루는 함수 설명 & 예시 - brickhouse UDF (0) | 2024.01.18 |
댓글