Spark

Pandas DataFrame vs Spark DataFrame

j.d 2025. 4. 18. 01:45

데이터 분석이나 전처리를 하다 보면 가장 많이 접하게 되는 객체 중 하나가 바로 DataFrame입니다.
하지만 사용하는 환경에 따라 Pandas의 DataFrameSpark의 DataFrame은 구조도, 처리 방식도, 확장성도 전혀 다릅니다.

 

이 글에서는 두 프레임워크의 DataFrame이 어떻게 다르고, 어떤 상황에서 각각을 써야 하는지 비교해보겠습니다.

 

출처: https://medium.com/geekculture/pandas-vs-pyspark-fe110c266e5c

 

 

Pandas DataFrame

특징

 

  • CSV, Excel, SQL 등 다양한 파일을 쉽게 불러오기
  • .groupby(), .pivot(), .merge() 등 강력한 분석 API 제공
  • Python 코드와 완벽한 통합 (NumPy, Matplotlib 등과 잘 맞음)

장점

 

  • NumPy 기반으로 구현되어 매우 빠름
    → Pandas의 대부분 연산은 NumPy의 배열 연산 위에서 작동하므로 C로 구현된 내부 연산 덕분에 속도가 빠름
  • 직관적인 문법빠른 실행
  • 소규모 데이터에 최적화

단점

 

  • 메모리에 올릴 수 있는 데이터만 처리 가능 (수백 MB ~ 수 GB 수준)
  • 병렬 처리나 분산 처리에는 한계

 

Spark DataFrame

특징

  • Hadoop HDFS, S3, Hive 등 분산 파일 시스템과의 연결 가능
  • Catalyst OptimizerTungsten 엔진으로 자동 최적화 및 코드 생성
  • SQL + 함수형 API 모두 지원 → SQL과 유사한 쿼리 작성 가능
  • 지연 실행(Lazy Evaluation) → 최적화된 실행 계획 생성
  • 모든 연산은 새로운 DataFrame 반환 → 원본 불변성 유지

장점

  • 수백 GB ~ 수 TB 이상 데이터도 처리 가능
  • 병렬 처리 → 속도와 안정성 확보
  • 클러스터 기반으로 확장 가능 (Spark Standalone, YARN, Kubernetes 등)

단점

  • 초기 설정 및 개발 환경이 다소 복잡
  • 실시간 시각화, 디버깅에 제약
  • 소규모 데이터에서는 오히려 느릴 수 있음

 

비교

항목 Pandas DataFrame Spark DataFrame
언어 Python 전용 PySpark, Scala, Java, R 등
구조 메모리 기반 2D 테이블 분산 처리 기반 테이블
실행 방식 즉시 실행 (Eager) 지연 실행 (Lazy)
처리 규모 수백 MB ~ 수 GB 수십 GB ~ 수 PB 이상
API 스타일 Pythonic SQL + 함수형 API
최적화 없음 (수동 최적화) Catalyst 엔진으로 자동 최적화
라이브러리 기반 NumPy 기반 → 매우 빠름 Spark SQL 엔진 기반

 

 

항목 Pandas Spark
컬럼 접근 df['col'], df[['col1', 'col2']] df.select('col'), 리스트 접근 X
컬럼 생성 df['new'] = df['col'] * 2 df.withColumn('new', col('col') * 2)
inplace 수정 가능 (inplace=True) 불가능 → 항상 새로운 객체 반환
컬럼 삭제 df.drop(['col1', 'col2'], axis=1) df.drop('col1', 'col2')
여러 컬럼 지정 방식 리스트 기반 (['a', 'b']) 개별 인자 ('a', 'b')
SQL 스타일 지원 일부 기능 (query 등) 완전한 SQL 표현 지원 (Spark SQL 엔진)

 

 

'Spark' 카테고리의 다른 글

Spark란?  (0) 2025.04.18