[hive] 하이브의 UDF, UDAF, UDTF

2017. 3. 22. 17:11·빅데이터/hive

하이브의 UDF는 UDF, UDAF, UDTF 로 구분된다. 


  • UDF: 한개의 행에서 동작한다. 입력과 출력은 하나이다. 
    • ex) TRIM()
  • UDAF: 집계 함수이다. 여러 행의 데이터를 집계하여 하나의 결과를 출력합니다. 
    • ex) COUNT(), SUM()
  • UDTF: 하나의 행을 입력으로 받아서 여러행의 데이터를 반환한다. 
    • ex) EXPLODE()

하이브에서 제공하는 기본 UDF를 이용할 수 있고, 
사용자가 UDF 를 만들어서 적용할 수 도 있다. 

사용자가 UDF를 만들어서 적용하는 방법은 다음과 같다. 

package sdk.hadoop.hive;
 
import org.apache.hadoop.hive.ql.exec.UDF;
import org.apache.hadoop.io.Text;
 
public final class Sample extends UDF {
  public Text evaluate(final Text s) {
    if (s == null) { return null; }
    return new Text(s.toString().toLowerCase());
  }
}

-- JAR 추가 
ADD JAR hdfs://localhost:8020/user/hadoop/sample.jar;

-- 함수 생성 
CREATE TEMPORARY FUNCTION sampleFunc AS 'sdk.hadoop.hive.Sample';

-- 생성한 함수 사용
select sampleFunc('abcd');


위와 같이 만들어서 사용할 수 있다. 
UDF, UDAF, UDTF의 자세한 구현 사항은 git에 구현된 하이브 소스코드를 보면더 도움이 된다. 


hive 빌트인 UDF - https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-HiveOperatorsandUser-DefinedFunctions(UDFs)

UDF 생성 방법 - https://cwiki.apache.org/confluence/display/Hive/HivePlugins

Hive의 UDF 구현체 - https://github.com/apache/hive/tree/master/ql/src/java/org/apache/hadoop/hive/ql/udf


반응형
저작자표시 비영리 (새창열림)

'빅데이터 > hive' 카테고리의 다른 글

[hive] UDAF 구현 예제  (0) 2017.03.27
[hive] UDF 구현 예제  (0) 2017.03.23
[hive] 하이브의 CSV 서데 사용 방법  (0) 2017.03.08
[hive] 하이브 테이블에 데이터 입력 방법  (0) 2017.02.21
[hive] 하이브 테이블 생성하기  (0) 2017.02.21
'빅데이터/hive' 카테고리의 다른 글
  • [hive] UDAF 구현 예제
  • [hive] UDF 구현 예제
  • [hive] 하이브의 CSV 서데 사용 방법
  • [hive] 하이브 테이블에 데이터 입력 방법
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    build
    HIVE
    emr
    error
    하이브
    다이나믹
    파이썬
    mysql
    bash
    S3
    oozie
    정올
    Python
    AWS
    yarn
    airflow
    java
    k8s
    백준
    nodejs
    ubuntu
    Tez
    HDFS
    SPARK
    하둡
    hbase
    오류
    Linux
    알고리즘
    Hadoop
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[hive] 하이브의 UDF, UDAF, UDTF
상단으로

티스토리툴바