함수 호출
함수 호출 (Function Invocation)
Spark에서 함수 호출이 어떻게 동작하는지, 특히 인자를 함수의 매개변수에 연결하는 방식을 다룬 문서예요. Spark는 위치 기반 인자 호출과 이름 기반 인자 호출을 모두 지원하는데, 두 방식의 차이와 각각 언제 써야 하는지를 알려드릴게요. 테이블을 인자로 넘기는 방법까지 포함하고 있어요.
출처: 문서
본문
설명 (Description)
함수 호출(function invocation)은 내장 함수(built-in function)나 사용자 정의 함수(user-defined function)를 실행하는데, 이때 인자(argument)를 함수의 매개변수(parameter)에 연결한 뒤 실행해요.
Spark는 **위치 기반 매개변수 호출(positional parameter invocation)**과 **이름 기반 매개변수 호출(named parameter invocation)**을 모두 지원해요.
위치 기반 매개변수 호출 (Positional parameter invocation)
각 인자는 지정된 위치에 있는 매칭되는 매개변수에 할당돼요.
별도로 이름 기반 매개변수 호출이 필요하다고 문서에 명시되지 않는 한, 모든 함수에서 이 표기법을 사용할 수 있어요.
함수가 선택적 매개변수(optional parameter)를 지원한다면, 인자가 지정되지 않은 끝부분의 매개변수들은 기본값으로 처리돼요.
이름 기반 매개변수 호출 (Named parameter invocation)
인자를 함수가 공개한 매개변수 이름을 사용해 매개변수에 명시적으로 할당해요.
이 표기법은 선택적 매개변수가 많아서 위치 기반 호출이 비현실적인 특정 내장 함수들에서 반드시 사용해야 해요. 이런 함수들은 혼합 호출(mixed invocation)도 허용하는데, 앞쪽 매개변수들은 위치로, 뒤쪽의 선택적 매개변수들은 이름으로 할당하는 방식이에요.
구문 (Syntax)
function_name ( [ argExpr | table_argument ] [, ...]
[ namedParameter => [ argExpr | table_argument ] [, ...] )
table_argument
{ TABLE ( { table_name | query } )
[ table_partition ]
[ table_order ]
table_partitioning
{ WITH SINGLE PARTITION |
{ PARTITION | DISTRIBUTE } BY { partition_expr | ( partition_expr [, ...] ) } }
table_ordering
{ { ORDER | SORT } BY { order_by_expr | ( order_by_expr [, ...] } }
매개변수 (Parameters)
-
function_name
내장 함수 또는 사용자 정의 함수의 이름이에요. 한정되지 않은(unqualified)
function\_name을 해석할 때 Spark는 먼저 내장 함수 또는 임시 함수(temporary function)를 고려하고, 그다음 현재 스키마에 있는 함수를 고려해요. -
argExpr
연결되는 매개변수로 암시적으로 캐스트될 수 있는 어떤 표현식이든 괜찮아요.
함수는 리터럴, 상수 표현식, 특정 값을 강제하는 등 인자에 추가 제약을 걸 수도 있어요.
-
namedParameter
argExpr이 할당될 매개변수의 한정되지 않은 이름이에요.이름 기반 매개변수 표기법은 Python UDF와 특정 내장 함수에서 지원돼요.
-
table_argument
매개변수에 테이블을 인자로 지정해요.
-
TABLE ( table_name )
함수에 전달할 테이블을 이름으로 식별해요.
-
TABLE ( query )
쿼리의 결과를 함수에 전달해요.
-
table-partitioning
선택적으로 테이블 인자가 파티셔닝된다는 것을 지정해요. 지정하지 않으면 파티셔닝은 Spark가 결정해요.
-
WITH SINGLE PARTITION
테이블 인자가 파티셔닝되지 않아요.
-
partition_expr
테이블 인자를 어떻게 파티셔닝할지 정의하는 하나 이상의 표현식이에요. 각 표현식은 테이블 인자에 존재하는 컬럼, 리터럴, 매개변수, 변수, 결정적 함수로 구성될 수 있어요.
-
table_ordering
선택적으로 테이블 인자의 각 파티션 결과 행이 함수에 전달되는 순서를 지정해요.
기본적으로 순서는 정의되지 않아요.
-
order_by_expr
하나 이상의 표현식이에요. 각 표현식은 테이블 인자에 존재하는 컬럼, 리터럴, 매개변수, 변수, 결정적 함수로 구성될 수 있어요.
-
-
-
더 알아보기 (Learn more)
- 아파치 스파크 SQL 참조 (원문)
- Function Reference and Usage — 함수 관련 전반을 다루는 문서
- Built-in Functions — 내장 함수 목록
- Scalar User Defined Functions (UDFs) — 스칼라 UDF 문서