Spark shuffle partition 수, 200에서 시작하지 않기
개인 공부2026년 9월 11일
spark.sql.shuffle.partitions 의 기본값은 200이다. 데이터 크기와 무관하게 고정된 값이라, 작은 작업에서는 태스크가 과하게 쪼개지고 큰 작업에서는 파티션 하나가 너무 커진다.
잡는 기준
셔플 후 파티션 하나가 100~200MB 정도가 되도록 맞추는 편이다.
파티션 수 ≈ 셔플 데이터 크기 / 128MB
5GB 를 셔플한다면 40개 근처가 된다. 200으로 두면 파티션당 25MB 라, 태스크 스케줄링 비용이 실제 계산보다 커지는 구간에 들어간다.
AQE 를 켜면
Spark 3 부터는 spark.sql.adaptive.enabled 가 켜져 있으면 실행 중에 작은 파티션을 합쳐 준다. 그래도 시작값이 터무니없으면 합치는 일 자체가 비용이라, 대략이라도 맞춰 두는 편이 낫다.
Spark UI 의 Shuffle Read Size 를 보고 다음 실행에서 조정하는 게 제일 빠르다.