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 |