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