스파크 RDD 이해하기

2024. 9. 1. 15:37·데이터 엔지니어링

Apache spark에서는 데이터를 다루기 위해 아래 3가지 추상화 개념을 제공합니다.

  • RDD (Resilient Distributed Datasets)
  • DataFrames
  • Datasets

이 중 RDD에 대한 설명과 예제를 통해 이해해보고자 합니다.

정의

RDD는 Spark의 기본 데이터 구조로 병렬로 처리할 수 있는 불변 분산 객체 컬렉션

특징

  • 메모리 내에서 처리 연산을 지원함
    • 기존 map reduce 파일 시스템과 비교했을 때의 장점
  • 생성되면 수정할 수 없음
    • 기존 RDD를 수정하는 게 아니라 새로운 RDD를 생성함. (불변성)
  • RDD는 장애로부터 쉽게 복구할 수 있음
    • 위 불변성 덕분에 RDD 복구가 쉽고 분산 환경에서 처리되기에 Node A에서 문제시 Node B에서 수행 가능함
  • Laze Evaluation
    • Action 연산자를 만나야 작업을 수행함 (Tranformation 연산은 아무리 쌓여도 실행하지 않음)
  • 컴파일 시 타입 체크
    • 실행 전 에러를 조기 발견할 수 있음

연산

Transformation 연산

  • map, filter, distinct, union, intersection
  • Return: RDD

Action 연산

  • collect, count, top(num), takeOrdered(num), reduce(func)
  • Return: 실행 결과

예제

예제 데이터로부터 RDD를 생성한 뒤 transformation 연산 & Action 연산을 수행해보고자 합니다.
그리고 Spark WebUI를 통해 수행 작업을 시각화해서 확인해 봅니다.

from pyspark import SparkContext, SparkConf


conf = SparkConf().setAppName("test_rdd").setMaster("local")
sc = SparkContext(conf=conf)

data = [1, 2, 3, 4, 5]
distData = sc.parallelize(data)

# transformation
added_distData = distData.map(lambda x: x+1)

# action
result = added_distData.top(3)

while True:
    pass # web ui 확인

 

http://localhost:4040 에서 Stage 확인

'데이터 엔지니어링' 카테고리의 다른 글
  • Airflow에서 Deferrable Operator란?
  • DynamoDB와 Read / Write Capacity
  • RDD vs DataFrame in Spark
ssuwani
ssuwani
  • ssuwani
    Oops!!
    ssuwani
  • 전체
    오늘
    어제
    • 분류 전체보기 (69)
      • MLOps (19)
      • 데이터 엔지니어링 (4)
      • Kubernetes (5)
      • Kafka (10)
      • 📚책 (3)
      • 라즈베리파이 (1)
      • ETC (8)
      • Python (6)
      • 언어모델 (5)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    FastAPI
    LangChain
    MLOps
    Airflow
    Confluent Cloud
    Kubeflow
    asyncronous
    태그2
    Spark
    producer
    evidently ai
    redis
    태그1
    LLM
    auto tagging
    Docker
    Schema Registry
    gcp
    consumer
    Python
    fluentbit
    RDD
    Kafka
    BentoML
    topic
    Kubernetes
    Github Actions
    Prometheus
    datadrift
    mlflow
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
ssuwani
스파크 RDD 이해하기
상단으로

티스토리툴바