UDF

IRIS는 사용자 정의한 함수 (UDF; User Defined Function) 기능을 제공하고 있습니다. 단, 함수 중에서 Aggregate 계열의 UDF는 등록이 불가능 하며, 일반 함수(레코드 단위로 사용 되는 함수) 만 UDF로 등록할 수 있습니다.

UDF를 등록하기 위해서는 다음과 같은 과정을 거쳐야 합니다.

  1. UDF 기능 활성화

  2. UDF 함수 제작

  3. UDF 함수 배포 및 설치

UDF 기능 활성화

IRIS를 기본설치할 경우 UDF 는 사용하지 않도록 설정이 되어 있습니다. 따라서, 해당 기능을 사용하기 위해서는 IRIS의 설정값 변경을 통해 UDF기능을 활성화 시켜주어야 합니다.

해당 설정은 모든 노드에서 반복적으로 이루어 져야 합니다. 이래와 같이 m6.config의 SYSTEM_INFO 섹션의 udf 항목을 True로 변경 합니다.

[iris@master ~] vi ~/IRIS/conf/common/m6.config
#################################################
[SYSTEM_INFO]
…
udf = True
…

UDF 함수 제작

UDF함수를 제작하기 위해서는 python언어를 사용해야 합니다. 아래는 power함수를 제작하는 예제 입니다.

def _power(m, n):
    return pow(m, n)


fun_name = 'power'
fun_params = 2
fun = _power

UDF 함수에서는 3개의 변수를 선언해 주어야 합니다.

  • fun_name: 쿼리상에서 사용할 함수 이름

  • fun_param: 함수에 들어가는 인자의 개수

  • fun: UDF로 사용되는 메인 함수 이름

UDF 함수 배포 및 설치

UDF함수는 각 노드에 배포 및 설치가 이루어 져야 합니다. 사용자가 작성한 파일은 각 노드에 다음 경로에 배포를 합니다.

${M6_HOME}/libext/udf

이후 다음 파일을 수정 합니다.

[iris@master ~]$ vi ${M6_HOME}/libext/udf/__init__.py
__all__ = [‘power’]

__all__ = [] 변수 안에 생성한 UDF 파일의 파일 명을 기록해 둡니다. 만약 power.py 로 파일을 생성했을 경우 __all__ = [‘power’] 를 기록하게 됩니다.

위의 작업을 전부 거친 이후부터 power함수를 사용할 수 있습니다.