hive에서 지원되는 built-in function 이외에 업무와 연관된 custom function이 필요할 경우 아래와 같은

순서로 진행을 함



1. IDE 또는 mvn에서 새로운 프로젝트 생성

2. 해당 프로젝트 lib 디렉토리 안에 아래 jar 추가

   1) hadoop-comm-{haoop version}  

      ex) hadoop-common-2.6.0

   2) hive-exec-{hive version}

      ex) hive-exec-1.2.1


3. 아래와 같이 udf class 상속하여 custom class 작성


package com.test.customudf;



import org.apache.hadoop.hive.ql.exec.UDF;

import org.apache.hadoop.io.Text;


public class TestString extends UDF {

    public Text evaluate(final Text text) {

        if (text == null) {

            return null;

        }

        StringBuilder sBuilder = new StringBuilder(text.toString());

        String reverse = sBuilder.reverse().toString();

        return new Text(reverse);

    }

}


4. 프로젝트 compile 및 jar로 export

5. hive가 돌고 있는 서버로 해당 jar copy

6. 해당 custom jar hive 추가

hive > add jar /tmp/customudf.jar

7. 등록되었는지 확인

hive > list jars;

8. hive에서 func 생성

hive> create function reverse as 'com.test.customudf.TestString'

9. 해당 func 사용

hive> select reverse('eriweirweir');



* beeline(hive2)에서 사용시


1. jar upload

hdfs dfs -put customudf.jar /tmp/


2. beeline 접속

beeline -u jdbc:hive2://localhost:10000/default


3. udf 생성

create function reverse as 'com.test.customudf.TestString' using jar 'hdfs://localhost/tmp/customudf.jar';



'NoSQL > Hive' 카테고리의 다른 글

hive partition 신규 파티션 자동인식  (0) 2017.03.09
hive function  (0) 2017.02.27
hive에서 RDB와 CRUD  (0) 2017.02.25
impala가 지원하지 않는 기능  (0) 2017.02.25
hive index  (0) 2017.02.19

+ Recent posts