15

Spark 초보자가 하는 흔한 실수

Day 1: pandas로 10GB 처리하다 포기했다

학습 목표

Spark 사용 시 흔한 실수를 인지한다 올바른 패턴을 익힌다

실수 1: collect()를 함부로 쓴다

에디터 로딩 중...

collect()는 모든 데이터를 Driver로 가져온다. 10GB DataFrame에 collect()를 호출하면 Driver 메모리가 터진다.

에디터 로딩 중...

실수 2: pandas로 변환한다

에디터 로딩 중...

toPandas()도 collect()와 같은 문제가 있다.

에디터 로딩 중...

실수 3: Lazy Evaluation을 이해 못함

에디터 로딩 중...

Action을 호출해야 실행된다:

에디터 로딩 중...

디버깅할 때 주의해야 함!


실수 4: 파티션 수를 무시한다

에디터 로딩 중...

권장:

  • 로컬 개발: 4~8개
  • 프로덕션: 코어 수의 2~4배
에디터 로딩 중...

실수 5: SparkSession을 여러 번 만든다

에디터 로딩 중...

SparkSession은 애플리케이션당 하나만 만들자.

에디터 로딩 중...

체크리스트

  • collect()나 toPandas()를 대용량 데이터에 쓰지 않았는가?
  • Action 없이 Transformation만 있지는 않은가?
  • 로컬 개발 시 파티션 수를 줄였는가?
  • SparkSession을 중복 생성하지 않았는가?