☁️ 사용자 정의 함수
- 스파크는 사용자 정의 함수를 지원
- 파이썬, 스칼라, 외부 라이브러리를 사용해 사용자가 원하는 형태로 트랜스포메이션을 만들 수 있다.
- 스칼라나 자바로 함수를 작성했다면 JVM 환경에서만 사용할 수 있다.
- 파이썬으로 함수를 작성했다면
- 워커 노드에 파이썬 프로세스를 실행
- 파이썬이 이해할 수 있는 포맷으로 데이터 직렬화
- 파이썬 프로세스에 있는 데이터의 로우마다 함수 실행
- JVM과 스파크에 처리 결과 반환
🖼️ 윈도우 함수
- 특정 '윈도우'를 대상으로 고유의 집계 연산을 수행
- 데이터의 '윈도우'는 현재 데이터에 대한 참조를 사용해 정의
- 윈도우 명세는 함수에 전달될 로우를 결정
- 윈도우 함수는 프레임에 입력되는 모든 로우에 대해 값을 계산
- 프레임: 로우 그룹 기반의 테이블이며, 각 로우는 하나 이상의 프레임에 할당될 수 있다.
- 스파크가 지원하는 윈도우 함수
🥐 롤업
- group-by 스타일의 다양한 연산을 수행할 수 있는 다차원 집계 기능
- 예) 날짜와 국가 컬럼을 축으로 하는 롤업 → 모든 날짜의 총합, 날짜별 총합, 날짜별 국가별 총합
🧊 큐브
- 롤업을 고차원적으로 사용할 수 있게 해준다.
- 모든 차원에 대해 동일한 작업을 수행
- 예) 전체 날짜와 모든 국가에 대한 합계, 모든 국가의 날짜별 합계, 날짜별 국가별 합계, 전체 날짜의 국가별 합계
💬 그룹화 ID (grouping_id)
- 큐브와 롤업을 사용하다 보면 집계 수준에 따라 쉽게 필터링하기 위해 집계 수준을 조회하는 경우가 발생하는데, 이때 grouping_id가 결과 데이터셋의 집계 수준을 명시하는 컬럼을 제공한다.
- 3️⃣ : 가장 높은 계층의 집계 결과, 두 컬럼에 대한 모든 집계 결과
- 2️⃣ : 한 컬럼에 대한 모든 집계 결과
- 1️⃣ : 다른 한 컬럼에 대한 모든 집계 결과
- 0️⃣ : 두 컬럼의 조합별 집계 결과
📌 Pivot
[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)