BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT
최신 리포트 다운로드 지금 바로 문의하기
BESPIN Tech Blog
BESPIN Tech Blog
  • Tech
    • CSP
      • AWS
      • GCP
      • NCP
    • Cloud
      • Migration
      • LZ, Control Tower
      • Backup
      • Monitoring
      • Container
    • Infra
      • OS
      • Middleware
    • Data
      • RDB
      • Big Data Platform
    • Application
      • CI/CD
  • Trend
  • IT
  • Contact US
Big Data Platform

Spark 7편: Optimising Shuffle Partitions(coalescePartitions)

by 민우 서 2025년 03월 28일
2025년 03월 28일
11

안녕하세요 오늘은 BESPIN GLOBAL Data실 한제호님이 작성해주신 ‘Spark 7편: Optimising Shuffle Partitions(coalescePartitions)’ 에 대해 소개해드리도록 하겠습니다.

목차
1. AQE 기능
2. Spark 버전별 최적화 모듈 진화 과정
3. coalescePartitions

1. AQE 기능

  • Spark 3.0으로 업데이트 되면서 가장 좋은 기능으로 판단되는 기능이 AQE 기능입니다.
  • Spark내의 Optimizer인 Spark Catalyst 기능은 Spark 기능중에 가장 중요한 계층의 기능입니다. Spark Catalyst는 논리 계획에서 물리계획으로 변경되는 시점에 쿼리 최적화를 실행합니다. 즉, 물리계획이 만들어지고 계획이 실행된 다음에는 최적화를 실행하지 않습니다.
  • Spark 3.0에서는 추가 최적화 계층으로 AQE를 도입하였으며 RunTime시에 실행의 일부로 수집된 메트릭 정보에 따라 쿼리를 재 최적화합니다. 재 최적화는 Spark Job내에서 각 Stage 가 끝나는 시점에 수행합니다. 최종적으로 사용자 입장에서는 Spark Optimizer를 통해 Plan이 만들어질때와 stage가 넘어가기 직전 크게 2가지 측면에서 최적화 작업이 발생합니다.

2. Spark 버전별 최적화 모듈 진화 과정

  • Spark 버전별 최적화 모듈 진화 과정
    • Spark 1.x – Catalyst Optimizer 및 Tungsten Execution Engine 도입
    • Spark 2.x – Cost Model 기반의 Optimizer 추가
    • Spark 3.0 – Adaptive Query Execution 추가

3. coalescePartitions

  • 이번 게시글에서는 Spark3.0 AQE 기능중에 coalescePartitions에 대해 소개하려 합니다.
  • Spark 환경에서의 셔플(파티션간의 데이터 이동)은 쿼리 성능에 지대한 영향을 미친다. 셔플이 발생할 때 파티션 수는 shuffle partition 설정 값에 따라 결정된다. 그래서 셔플 파티션 수 크기에 따라 아래와 같은 문제가 발생할 수 있습니다.
    • 셔플 파티션 수가 작은 경우
      • 각 셔플 파티션에 적재되는 데이터가 큰 경우 Disk를 활용(disk spill)하는 경우가 생기기 때문에 쿼리 성능 저하 발생
    • 셔플 파티션 수가 큰 경우
      • 각 셔플 파티션에 저장되는 데이터가 작은 경우 많은 셔플 파티션들을 읽어야 하기 때문에 비효율적인 네트워크 I/O로 인해 쿼리 성능 저하 발생
  • 따라서 기존에는 셔플파티션 수를 사용자가 판단하여 적절하게 설정하는 방식으로 최적화해 왔습니다. (Spark 2.x까지는 사용자가 알아서 튜닝해야 했습니다.)
  • AQE에서는 각 stage가 끝남과 동시에 셔플 통계정보를 바탕으로 많은수의 작은 파티션을 합쳐서 큰 파티션으로 뭉쳐주는 기능을 제공합니다.
  • AQE 기능이 비활성화 되어 있는 경우
  • join 후 셔플파티션 수 만큼 파티션 생성됨
spark.conf.set("spark.sql.adaptive.enabled", "false")
spark.conf.set("spark.sql.adaptive.coalescePartitions.enabled", "false")
spark.conf.set("spark.sql.shuffle.partitions", 200)

sales_df = spark.read.option("header", "true").csv("./dataset/sales/sales.csv")
return_df = spark.read.option("header", "true").csv("./dataset/sales/return.csv")
sales_df.createOrReplaceTempView("sales")
return_df.createOrReplaceTempView("return")

join_df = spark.sql("""
    SELECT sales.ORDER_NO, sales.ORDER_DATE, sales.CUSTOMER_NO, return.RETURN
    FROM   sales FULL JOIN return ON sales.ORDER_NO = return.ORDER_NO
""")
join_df.write.mode("overwrite").csv("./dataset/output/sales/shuffle/")

 sparkui상에 stage 로그를 보면 join 이후 디폴트 셔플 파티션 수에 따라 200개로 늘어난 것을 볼 수 있습니다. 

여기까지 ‘Spark 6편: Yarn Resource Manager 라벨링’에 대해 소개해드렸습니다. 유익한 정보가 되셨길 바랍니다. 감사합니다. 

Written by 한 제호 / Data실

BESPIN GLOBAL

관련

SparkOptimisingShufflePartitionscoalescePartitions

HOT Trend

Recent Posts

  • 딜로이트도, 맥킨지도, 베스핀글로벌도: AI 에이전트로 일 바꾸는 시대

    2025년 07월 04일 클라우드베스핀글로벌clouddata데이터AI인공지능HelpNow AIbespinglobalAI에이전트helpnow업무자동화딜로이트
  • ⚔️데이터센터에서 시작된 전쟁? 요즘 뜨는 AIDC 개념부터 트렌드까지!

    2025년 06월 27일 클라우드clouddata데이터AI데이터센터클라우드 데이터센터bespinglobalAIDCAI 인프라베스핀글로벌
  • 구글부터 엔비디아까지, 빅테크 기업들의 AI 전략 최신본📖

    2025년 06월 20일 cloud베스핀글로벌클라우드data데이터AI구글마이크로소프트엔비디아AI에이전트google I/ONVIDIA GTC 2025Microsoft build 2025
  • AI를 연결한다고? 업계가 주목하는 ‘MCP’ 알아보기🔍

    2025년 06월 13일 베스핀글로벌클라우드cloudAIMCP
  • [WhaTap] RDS Failover/Reboot 관제 2 – RDS Failover

    2025년 05월 30일 RDSRDS FailoverRebootFailoverbespin global

베스핀글로벌은 모든 기업의 AI 혁신을 실현하기 위해, 세상에서 가장 혁신적이고 자동화된 AI 서비스와 솔루션을 만들어갑니다.
상호 : 베스핀글로벌 주식회사 ㅣ 대표자명 : 김써니, 허양호 ㅣ 사업자등록증번호 : 638-87-00223 ㅣ 통신판매번호 : 2019-서울서초-0347 ㅣ 대표전화 : 1668-1280
사업장주소지 : 서울특별시 서초구 강남대로 327, 13,14,15,16층(서초동,대륭서초타워) ㅣ 이메일 : info@bespinglobal.com ㅣ 개인정보 처리방침 ㅣ 개인정보 처리방침 안내

© 2026 BESPIN GLOBAL, All Rights Reserved.

BESPINGLOBAL
패밀리 사이트
China MEA SEA US

BESPIN Tech Blog
  • Home
  • Tech
    • CSP

      AWS

      GCP

      NCP

      Cloud

      Migration

      LZ, Control Tower

      Backup

      Monitoring

      Container

      Infra

      OS

      Middleware

      Data

      RDB

      Big Data Platform

      Application

      CI/CD

      BESPICK 구독하기 ㅣ 1668-1280

  • Trend
  • IT