UDF
IRIS는 사용자 정의한 함수 (UDF; User Defined Function) 기능을 제공하고 있습니다. 단, 함수 중에서 Aggregate 계열의 UDF는 등록이 불가능 하며, 일반 함수(레코드 단위로 사용 되는 함수) 만 UDF로 등록할 수 있습니다.
UDF를 등록하기 위해서는 다음과 같은 과정을 거쳐야 합니다.
UDF 기능 활성화
UDF 함수 제작
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함수를 사용할 수 있습니다.