더북(TheBook)

5.1.3.1 내장 스칼라 함수와 내장 집계 함수

스칼라(scalar) SQL 함수는 각 로우의 단일 칼럼 값이나 여러 칼럼 값을 계산해 해당 로우의 단일 결과 값으로 반환한다. 예를 들어 절댓값을 계산하는 abs나 지수 결과를 계산하는 exp, 문자열 일부를 추출하는 substring 등이 스칼라 함수에 해당한다. 반면 집계 함수는 로우 그룹에서 단일 값을 반환한다. 로우 그룹의 최솟값을 계산하는 min이나 평균값을 계산하는 avg 함수 등이 집계 SQL 함수에 해당한다.

스칼라 함수와 집계 함수는 org.apache.spark.sql.functions 객체에 위치한다. 다음과 같이 모든 SQL 함수를 한 번에 임포트할 수 있다(스파크 셸에서는 자동으로 임포트하므로 이 명령을 따로 실행할 필요가 없다).

import org.apache.spark.sql.functions._

 

다음은 스파크가 제공하는 스칼라 함수의 예시다. 이밖에도 다양한 함수를 제공한다.

수학 계산: abs(절댓값을 계산한다), hypot(칼럼 값이나 스칼라 값 두 개를 각각 삼각형의 밑변과 높이로 가정하고, 이 삼각형의 빗변 길이를 계산한다7), log(로그 값을 계산한다), cbrt(세제곱근(cube root)을 계산한다)

문자열 연산: length(문자열 길이를 반환한다), trim(문자열 왼쪽과 오른쪽에 있는 불필요한 공백을 잘라 낸다), concat(복수의 입력 문자열을 이어 붙인다)

날짜 및 시간 연산: year(날짜 칼럼의 연도를 반환한다), date_add(날짜 칼럼에 입력된 일수만큼 더한다)

 

7 역주 물론 피타고라스 공식을 사용해 빗변 길이를 직접 계산할 수도 있다. 하지만 굳이 hypot 함수를 사용하는 이유는 이 함수가 제곱 및 제곱근 계산 중 발생할 수 있는 오버플로나 언더플로를 방지하기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.