[스터디] 스파크 완벽 가이드 7일차

Kristopher·2022년 1월 14일
0

Spark 스터디

목록 보기
7/16

Chapter 7 집계 연산

집계를 수행하려면 key나 group을 지정하고 하나 이상의 column을 변환하는 방법을 지정하는 집계 함수를 사용해야 한다. 이는 gorup by, window, grouping set, rollup, cube 등의 방법을 사용하여 구현할 수 있다. 집계 함수에 따라 그룹화된 결과는 RelationalGroupedDataset을 반환한다.

집계 함수 - DataFrame

count

  • 액션이 아닌 트랜스포메이션의 역할을 수행하며, 특정 컬럼을 지정하거나 count(*)을 사용하여 로우 수를 계산할 수 있다.

countDistinct

  • 중복되지 않는 고유 레코드 수를 구해야 할때 사용. 개별 컬럼을 처리하는데 유용하다.

approx_count_distinct

  • 정확한 수치가 아닌 어느 정도 수준 이상의 정확도를 가지를 근사치를 구할 때 사용. 대규모 데이터셋을 사용하여 연산할 때 유용하다.

first/last

  • DataFrame의 첫번째/마지막 값을 얻을 때 사용. DataFrame의 값이 아닌 로우를 기반으로 동작한다.

min/max

  • DataFrame에서 최소값/최대값을 추출할 때 사용한다.

sum

  • DataFrame에서 특정 컬럼의 모든 값을 합산하기 위해 사용한다.

sumDistinct

  • 중복되지 않는 고유값만을 합산할 때 사용한다.

avg

  • 평균값을 구할 때 사용한다.

var_pop/var_sampp

  • 모집단/표본의 분산을 구할 때 사용한다.

stddev_pop/stddev_sampp

  • 모집단/표본의 표준편차를 구할 때 사용한다.

skewness/kurtosis

  • 비대칭도와 첨도를 구할 때 사용한다.

cov/corr

  • 공분산과 (피어슨)상관계수를 구하기 위해 사용한다.

그룹화

앞선 메소드들은 DataFrame내에서만 집계를 다루었다. 하지만 데이터 그룹 기반의 집계를 수행하는 일이 빈번히 발생한다. 데이터 그룹 기반의 집계는 단일 컬럼의 데이터를 그룹화하고 해당 그룹의 다른 여러 컬럼을 사용해서 계산하기 위해 카테고리형 데이터를 사용한다.

표현식을 이용한 그룹화 : agg 메소드를 사용하여 여러 집계 처리를 한번에 지정.
맵을 이용한 그룹화 : agg 메소드를 사용하여 key(Column 명), value(집계 방법)을 설정.

윈도우 함수

데이터 특정 window를 대상으로 고유 집계 연산 수행. 모든 로우 레코드가 단일 그룹으로 이동하는 group-by와 달리, 프레임에 입력되는 모든 로우에 대한 결과값을 계산한다. 스파크는 세가지 종류의 윈도우 함수를 지원한다.

  • Ranking function
  • Analytic function
  • Aggregate function

그룹화 셋

지금까지는 group-by를 사용하였지만, 여러 그룹 사이의 값을 집계해야하는 경우가 있다. 이 경우에 그룹화셋을 이용해야 하며, group-by구문에서 원하는 형태로 집계를 생성할 수 있다.

롤업 : 스파크의 다차원 집계 기능. 다양한 컬럼을 그룹화 키로 설정하여 데이터셋에서 가능한 모든 조합으로 결과값을 볼 수 있다.
큐브 : 롤업의 고차원적 버전이며, 요소들을 계층적으로 다루는 대신 모든 차원에 대해 동일한 작업을 수행한다.

그룹화 메타데이터

큐브와 롤업 사용시 집계 수준에 따라 쉽게 필터링하기 위해 집계 수준을 조회하는 경우가 있는데, 이 경우 grouping_id를 사용한다.

Reference

스파크 완벽 가이드
아파치 스파크

profile
개발자 지망생입니다.

0개의 댓글