

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# join 및 groupBy 대신 SQL 창 함수 사용
<a name="using-sql-window-functions"></a>

[창 함수](https://spark.apache.org/docs/latest/sql-ref-syntax-qry-select-window.html)(Spark 설명서)는 *창*이라는 행 그룹에 대해 현재 레코드와 어떤 식으로든 관련된 계산을 수행합니다. 예를 들어 현재 행과 동일한 파티션 또는 프레임에 있을 수 있습니다. 창 함수는 Spark에 내장되어 있으며 집계 함수와 유사합니다. `SUM` 또는와 같은 *집계 함수*는 행 그룹에서 `MAX`** 작동하고 모든 그룹에 대해 단일 반환 값을 계산합니다. 창 함수는 이동 평균을 계산하거나 현재 행의 상대적 위치를 기반으로 행 값에 액세스하는 등의 태스크를 처리하는 데 유용합니다.

Spark `groupBy` 함수는 데이터를 그룹으로 수집하고 그룹화된 데이터에 대한 집계 함수를 수행합니다. 를 사용하면가 데이터를 부분적으로 먼저 `groupBy` Spark 집계한 다음 축소된 데이터 세트를 셔플링합니다. 창 함수를 사용하면 전체 데이터 세트가 셔플링됩니다. 창 함수는 더 빠른 런타임을 제공할 수 있습니다.

매우 큰 데이터 세트에서는 열의 카디널리티가 크면 창 함수를 사용하는 것이 좋습니다. 그러나 열의 카디널리티가 작으면 데이터 집계가 작으며 집계된 결과를 조인에서 브로드캐스트할 수 있습니다.