스파크에서 파티션은 분산처리할 작업의 최소 단위입니다.
하나의 작업을 Task라고 하는데, 하나의 Task에서 하나의 파티션이 처리됩니다.
카카오 데이터팀에서 스파크 잡의 파티션 설정을 최적화한 경험을 글로 써주셨는데, 저도 많은 도움 받아서 공유해봅니다.
—-
결론
- Shuffle Spill이 일어난다면 에러가 발생해 작업이 지연될 수 있습니다. 그리고 Hadoop 클러스터가 busy 상태인 경우, 연달아 에러가 발생하고 강제 종료될 수 있습니다.
- 메모리가 부족하다면, 우선적으로 Shuffle Partition 수를 고려해야 합니다.
- Shuffle Partition의 크기를 100MB~200MB 사이로 나오도록 spark.sql.Shuffle.Partitions를 설정해야 합니다.