Scala UDF 소개¶
Scala에서 UDF(사용자 정의 함수)의 처리기를 작성할 수 있습니다. 처리기는 SQL에서 호출될 때 함수의 논리로 실행됩니다.
Snowflake는 현재 다음 Scala 버전에서 UDF 작성을 지원합니다.
2.12
처리기가 있으면 SQL로 UDF를 생성합니다. SQL을 사용하여 UDF을 만들거나 호출하는 방법에 대한 자세한 내용은 UDF 만들기 또는 UDF 호출하기 섹션을 참조하십시오.
UDF 처리기를 작성할 수 있는 언어 목록을 포함하여, UDF에 대한 소개는 사용자 정의 함수 개요 섹션을 참조하십시오.
참고
Scala 처리기와 관련된 제한 사항은 Scala UDF 제한 사항 섹션을 참조하십시오.
Snowpark API를 사용할 때 Scala를 사용하여 UDF를 작성할 수도 있습니다. 자세한 내용은 Scala에서 DataFrame용 사용자 정의 함수(UDF) 만들기 섹션을 참조하십시오.
처리기 작동 방식¶
사용자는 UDF를 호출할 때 UDF의 이름과 인자를 Snowflake에 전달합니다. Snowflake는 UDF와 연결된 처리기 메서드를 호출하여 UDF의 논리를 실행합니다. 그런 다음 핸들러 메서드는 출력을 Snowflake로 반환하고 Snowflake는 이를 다시 클라이언트로 전달합니다.
스칼라 함수(단일 값을 반환하는 함수)의 경우 UDF는 UDF에 전달되는 각 행에 대해 단일 값을 반환합니다.
처리기의 논리를 지원하기 위해 코드는 처리기 외부에 있는 라이브러리를 호출할 수 있습니다. 예를 들어 Scala에 데이터 분석 코드가 이미 있는 경우 처리기 코드에서 이 코드를 사용할 수 있을 것입니다.
Scala에서 처리기 작성에 대한 일반적인 정보는 일반 Scala UDF 처리기 코딩 지침 섹션을 참조하십시오. 스칼라 함수 작성에 대한 자세한 내용은 Scala로 스칼라 UDF 작성하기 섹션을 참조하십시오.
예¶
다음 예제의 코드는 처리기 메서드 TestFunc.echoVarchar
를 사용하여 echo_varchar
이라는 UDF를 생성합니다. Snowflake는 SQL-Scala 데이터 타입 매핑 에 설명된 매핑에 따라 Scala 인자 및 반환 유형을 SQL로 변환하거나 그 반대로 변환합니다.
CREATE OR REPLACE FUNCTION echo_varchar(x VARCHAR)
RETURNS VARCHAR
LANGUAGE SCALA
RUNTIME_VERSION = 2.12
HANDLER='TestFunc.echoVarchar'
AS
$$
class TestFunc {
def echoVarchar(x : String): String = {
return x
}
}
$$;
UDF 호출하기¶
SELECT echo_varchar('Hello');
설계 고려 사항¶
유용한 처리기를 설계하려면 다음 사항을 염두에 두십시오.
일반 고려 사항. UDF와 프로시저에 대한 일반적인 고려 사항은 함수와 프로시저의 설계 지침 및 제약 조건 섹션을 참조하십시오.
Snowflake에서 부과한 제약 조건 준수. Snowflake에서 잘 실행되는 처리기 코드를 설계하는 방법에 대한 자세한 내용은 Snowflake에서 적용한 제약 조건 내에서 유지되는 처리기 설계하기 섹션을 참조하십시오.
SQL-Scala 유형 매핑. UDF로 인자 및 반환 값을 교환할 때 Snowflake는 처리기 언어와 SQL 사이에서 전환합니다. 처리기 코드의 데이터 타입 선택에 대한 자세한 내용은 SQL-Scala 데이터 타입 매핑 섹션을 참조하십시오.
코드 패키징. 처리기 코드를 CREATE FUNCTION 문과 함께 인라인으로 사용하거나 스테이지에서 JAR로 컴파일된 코드로 사용하도록 할 수 있습니다. 차이점에 대한 자세한 내용은 처리기 코드를 인라인 또는 스테이지에 유지하기 섹션을 참조하십시오.
sbt를 사용하여 Scala 처리기용으로 컴파일된 코드를 패키징하는 방법에 대한 자세한 내용은 sbt로 Scala 처리기 코드 패키징하기 섹션을 참조하십시오.
코드 최적화. 코드가 여러 행에서 공유되는 상태를 처리하는 경우와 같이, 처리기 코드 최적화에 대한 자세한 내용은 스칼라 Scala UDF에서 전역 상태 제어하기 섹션을 참조하십시오.
모범 사례. 모범 사례에 대한 자세한 내용은 모범 사례 및 UDF 및 프로시저의 보안 모범 사례 섹션을 참조하십시오.
처리기 코딩¶
기본 사항부터 자세한 예제까지, 다음 항목에서는 UDF 처리기를 Scala로 작성하는 방법을 설명합니다.
일반 지침. 오류 처리, 데이터 타입 선택 등을 비롯하여 처리기 코딩에 대한 일반적인 정보는 일반 Scala UDF 처리기 코딩 지침 섹션을 참조하십시오.
스칼라 함수 작성하기 자세한 내용은 Scala로 스칼라 UDF 작성하기 섹션을 참조하십시오.
로깅 및 이벤트 추적. 처리기 코드가 실행될 때 로그 및 추적 데이터를 캡처하는 방법에 대한 자세한 내용은 로깅 및 추적 개요 섹션을 참조하십시오.
코드 예제 다양한 처리기 예제는 Scala UDF 처리기의 예 섹션을 참조하십시오.
종속성. 스테이지에 종속성을 업로드하여 런타임에 코드에서 사용 가능하도록 만들 수 있습니다. 자세한 내용은 코드에 종속성을 사용할 수 있도록 만들기 섹션을 참조하십시오.
처리기 파일 구성. 컴파일된 처리기 코드를 스테이지에 대한 JAR 파일로 패키징하려는 경우 Scala UDF 처리기 프로젝트 및 패키징 의 제안을 사용하여 코드를 구성하고 빌드하십시오.