스파크 RDD 이해하기

2024. 9. 1. 15:37·데이터 엔지니어링
목차
  1. 정의
  2. 특징
  3. 연산
  4. 예제

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 확인

  1. 정의
  2. 특징
  3. 연산
  4. 예제
'데이터 엔지니어링' 카테고리의 다른 글
  • 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)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.