반응형
kkh1902
Steadily
kkh1902
전체 방문자
오늘
어제
  • 분류 전체보기 (178) N
    • DataEngineering (20) N
      • Spark (7) N
      • Airflow (2) N
      • DBT (2) N
      • Architecture (3) N
      • Data Quality (5) N
      • Infra (1) N
    • 🤖 AI (12) N
      • ML (7)
      • DL (0)
      • LLM (5) N
    • 📚 Study (74)
      • DataEngineering (0)
      • Spring (9)
      • Java (2)
      • Html, css (10)
      • JS, JQuery (29)
      • DB (5)
      • DevOps (13)
      • roadmap (2)
      • Architecture (1)
      • Flutter (2)
    • 💻 Computer Science (28)
      • Datastructure (0)
      • Algorithm (2)
      • Design pattern (0)
      • Network (1)
      • DB (13)
      • Operating System (0)
      • Software Engineering (4)
      • CS interview (5)
      • topcit (3)
    • ⚒️ Etc (6)
      • Error (3)
      • Trouble_Shooting (2)
      • Dev_environment (1)
    • 📰 News (24)
      • daily (7)
      • think (17)
    • 📘 Hobby (13)
      • English (13)

블로그 메뉴

  • 📋 이력서
  • ⚡️ 깃허브
  • 태그
  • 방명록

공지사항

인기 글

태그

  • SpringBootTest
  • React JS # 2 The Basic of React
  • Flutter
  • 소프트웨어 공학 # chapter1
  • React JS # 자습서 # Component와 Props
  • junit5
  • testcode
  • git
  • 소프트웨어 공학 #project만들때 중요
  • git stash
  • Qr_payment project # CSS 해석 # Basic 맨위 해석
  • React # JSX
  • Wonder # word
  • sourcetreee
  • React JS #자습서
  • think #bootstrap을 써야하는 이유
  • Linear Regression
  • db
  • gitaction
  • React를 배워야하는 이유

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
글쓰기 / 관리자
kkh1902

Steadily

DataEngineering/Spark

Spark 최적화 체크리스트

2026. 1. 30. 19:39
728x90
반응형

1️⃣ 데이터 읽기 최적화

👉 읽는 양을 줄이는 게 1순위

  • CSV ❌ → Parquet / ORC ✅
  • select("*") ❌ → 필요한 컬럼만
  • filter는 최대한 앞에서
  • partition 컬럼으로 조회

2️⃣ Shuffle 최소화

👉 Spark 느려지는 가장 큰 이유

  • 불필요한 groupBy, distinct 제거
  • join 전에 row / 컬럼 줄이기
  • 작은 테이블은 broadcast join
  • 무분별한 repartition 금지

3️⃣ Partition 전략

👉 병렬 처리의 기본

  • 파티션 수 = 데이터 크기 / 128MB
  • 파티션 너무 많아도 ❌, 적어도 ❌
  • 줄일 땐 coalesce
  • 늘릴 땐 repartition

4️⃣ Join 최적화

👉 대부분 성능 이슈의 원인

  • 작은 테이블 broadcast
  • join key null 제거
  • join 전에 filter 적용
  • 데이터 skew 의심

5️⃣ 캐시 / 메모리

👉 필요할 때만

  • 같은 df 여러 번 쓸 때만 cache
  • 한번 쓰고 버릴 df는 ❌
  • Storage 탭에서 확인

6️⃣ Action 관리

👉 Action = Spark Job

  • count(), show() 남발 ❌
  • 디버깅 후 제거
  • collect() 웬만하면 ❌

7️⃣ 파일 출력 최적화

👉 나중 쿼리 속도 영향 큼

  • 너무 작은 파일 ❌
  • partitionBy 적절히
  • 압축 사용 (snappy)
  • 필요 시 coalesce 후 write

8️⃣ 데이터 스큐 대응 (중급)

👉 한 Task만 오래 걸릴 때

  • broadcast join
  • salting
  • Spark 3 skew hint

9️⃣ Spark UI 분석

👉 감 말고 증거

  • DAG → shuffle 위치
  • Stages → 느린 task
  • Storage → cache 상태

🔟 설정(Tuning) (고급)

👉 마지막 단계

  • executor memory / cores
  • shuffle partitions
  • dynamic allocation

🎯 한 줄 요약

Spark 최적화는읽기 → shuffle → 파티션 → join → 캐시 → UI이 순서로 본다


📌 이것만 외워도 충분

  • Shuffle 줄이기
  • Partition 맞추기
  • Parquet 사용
  • Spark UI 확인

728x90
반응형

'DataEngineering > Spark' 카테고리의 다른 글

spark ui 에서 병목찾는법  (0) 2026.01.30
Suffle이란?  (1) 2026.01.30
df.cache() 를 언제 써야하나?  (0) 2026.01.30
Dataframe 이란?  (0) 2026.01.30
Lazy Evaluation 이란?  (0) 2026.01.30
    'DataEngineering/Spark' 카테고리의 다른 글
    • spark ui 에서 병목찾는법
    • Suffle이란?
    • df.cache() 를 언제 써야하나?
    • Dataframe 이란?
    kkh1902
    kkh1902
    1Day 1 Commit 목표 공부한것들 매일 기록하기

    티스토리툴바