udf 란?

hive에서 사용하는 function 을 사용자가 직접구현하는 사용자 정의 펑션(user-defined-function의 약자)이다.

즉 user 하이브에서 사용할 function 을 구현하는 것이다. 일반 데이터베이스의 function 을(오라클 to_date, sum 등)을 직접 구현한다고 생각하면 된다.

 

syntax>

select <user-defined-function>(<colum_number>) from <table> ;


구현소스 

@Description(

  name="SimpleUDFExample",

  value="returns 'even x' or return 'odd x', where x is whatever you give it (Int)",

  extended="SELECT simpleudfexample('world') from foo limit 1;"

  )

class SimpleUDFExample extends UDF {

  

    public Text evaluate(IntWritable input) {

        if(input == null) return null;

        return new Text( (input.get()%2 == 0 ?"even ":"odd " )+ input.toString());

    }

}

  

보여주고자 하는 타입에 따라 return type을 설정하고, 매개변수는 function 의 입력 파라미터의 수 및 타입이 맞아야 한다.

매개변수는 Writable 을 상속한 클래스여야 한다.


 public Text evaluate(Text param1, IntWritable param2.... ) {

위와 같이 증가 시킬 수 있다.


evaluate 는 리턴은 void 는 안된다.( 리턴값이 function 의 실행 결과 같이 된다.)

 


hive 에서의 사용 예제


예시 데이타>

hive> select noticeseq from t_test;

1

2

3

4

 

 등록후 실행>

hive> ADD JAR ./hivetemplate.jar; 

* 해당 udf가 구현된 jar를 hive 에 등록한다.

hive> CREATE TEMPORARY FUNCTION examudf as 'SimpleUDFExample';

* 해당 udf 구현클래스를 function 으로 생성한다.

hive> select examudf(noticeseq ) from t_test;

odd 1

even 2

odd 3

even 4


'IT > 빅데이터(bigData)' 카테고리의 다른 글

hive 에서 형변환 함수  (0) 2014.12.02
Hive 의 Serde 2  (0) 2014.11.25
Hive 의 Serde 1  (0) 2014.11.25
MapReduce 데이터 흐름 분석  (0) 2014.11.25
Mapper 클래스 구성 및 사용  (0) 2014.11.22

+ Recent posts