[Apache Spark] 스파크 연산

연수·2021년 11월 14일
0

spark

목록 보기
7/26

☁️ 사용자 정의 함수

  • 스파크는 사용자 정의 함수를 지원
  • 파이썬, 스칼라, 외부 라이브러리를 사용해 사용자가 원하는 형태로 트랜스포메이션을 만들 수 있다.
  • 스칼라나 자바로 함수를 작성했다면 JVM 환경에서만 사용할 수 있다.
  • 파이썬으로 함수를 작성했다면
    • 워커 노드에 파이썬 프로세스를 실행
    • 파이썬이 이해할 수 있는 포맷으로 데이터 직렬화
    • 파이썬 프로세스에 있는 데이터의 로우마다 함수 실행
    • JVM과 스파크에 처리 결과 반환

 

🖼️ 윈도우 함수

  • 특정 '윈도우'를 대상으로 고유의 집계 연산을 수행
  • 데이터의 '윈도우'는 현재 데이터에 대한 참조를 사용해 정의
  • 윈도우 명세는 함수에 전달될 로우를 결정
  • 윈도우 함수는 프레임에 입력되는 모든 로우에 대해 값을 계산
  • 프레임: 로우 그룹 기반의 테이블이며, 각 로우는 하나 이상의 프레임에 할당될 수 있다.
  • 스파크가 지원하는 윈도우 함수
    • 랭크 함수
    • 분석함수
    • 집계함수

 

🥐 롤업

  • group-by 스타일의 다양한 연산을 수행할 수 있는 다차원 집계 기능
  • 예) 날짜와 국가 컬럼을 축으로 하는 롤업 → 모든 날짜의 총합, 날짜별 총합, 날짜별 국가별 총합

 

🧊 큐브

  • 롤업을 고차원적으로 사용할 수 있게 해준다.
  • 모든 차원에 대해 동일한 작업을 수행
  • 예) 전체 날짜와 모든 국가에 대한 합계, 모든 국가의 날짜별 합계, 날짜별 국가별 합계, 전체 날짜의 국가별 합계

 

💬 그룹화 ID (grouping_id)

  • 큐브와 롤업을 사용하다 보면 집계 수준에 따라 쉽게 필터링하기 위해 집계 수준을 조회하는 경우가 발생하는데, 이때 grouping_id가 결과 데이터셋의 집계 수준을 명시하는 컬럼을 제공한다.
  • 3️⃣ : 가장 높은 계층의 집계 결과, 두 컬럼에 대한 모든 집계 결과
  • 2️⃣ : 한 컬럼에 대한 모든 집계 결과
  • 1️⃣ : 다른 한 컬럼에 대한 모든 집계 결과
  • 0️⃣ : 두 컬럼의 조합별 집계 결과

 

📌 Pivot

  • 로우를 컬럼으로 변환

 

[출처] 스파크 완벽 가이드 (빌 체임버스, 마테이 자하리아 지음)

profile
DCDI

0개의 댓글