2026.04.23(Thu)

오유찬·2026년 4월 24일

DE

목록 보기
15/16

PySpark #python


RDD(Resilient Distributed Dataset)


회복 탄력성이 있는 분산 데이터셋

요즘은 잘 사용하지 않고 DataFrame을 사용하지만, 그 근간이 되는 low-level API이다.

주요 특징

  • Resilient(회복력) : 데이터 손실이 일어나도, RDD는 데이터 생성 과정을 기록한 Lineage를 가지고 있어 자동으로 데이터를 복구한다.
  • Distributed(분산)
  • Dataset(데이터셋)

RDD의 주요 동작 방식


  1. Transformation
    기존 RDD에서 새로운 RDD를 만드는 과정
    Lazy Evaluation(지연 연산) → 변환 명령을 내려도 즉시 실행되지 않고 기록만 해둔다.
    • map(), filter(), flatMap(), distinct()
    • flatmap() : 입력 문자열을 단어로 나누는 함수
  2. Action
    실제로 계산을 수행하거나 결과 반환, 저장하는 과정
    Action이 호출되는 순간, 쌓여있던 Transformation들이 최적화되어 한꺼번에 실행된다.
    • collect(), count(), take(), saveAsTextFile(), first()
    • collect() : 모든 요소를 배열로 반환
      cluster 곳곳에 흩어져 있는 데이터를 Driver 프로그램의 메모리로 수집하여 파이썬의 List 형태로 반환한다.
    • take(N) : 앞의 N개 요소를 배열로 반환
data = [1, 2, 3, 4, 5]
rdd = sc.parallelize(data)  # list -> RDD

# Transformation
trasformed_rdd = rdd.filter(lambda x: x % 2 == 0).map(lambda x: x * 10)

# Action
result = transformed_rdd.collect()

SparkSession - DataFrame API 진입점

  • SparkContext : RDD 생성을 위한 기본 진입점
  • SparkSession : Spark DataFrame과 상호작용하는 단일 진입점
  • SparkSession으로 DataFrame 생성, 등록, SQL 쿼리 실행을 수행
profile
열심히 하면 재밌다

0개의 댓글