RDD

Log·2023년 2월 26일
0

문서 목적

해당 문서는 RDD에 대해 정리하기 위해 작성된 문서이다.

RDD(resilient distributed dataset)

RDD의 경우, Spark 1.0 부터 지원하던 기본적인 데이터 구조로 아래와 같은 성질이 있다.

  • Immutable : 읽기 전용
  • Resilient : 장애 내성
  • Distributed : 분산 저장된 데이터 셋

한 번 생성된 RDD의 경우, 불변의 성질이 있으며 변환된 RDD의 경우 overwrite 방식이 아닌 새로운 RDD 객체를 가진다. 또한, RDD의 경우 복원성을 부여하는데, 노드에 장애가 발생하여도 유실된 RDD를 원래대로 복구할 수 있다.

e.g.

  • RDD 불변성
data = [1, 2, 3, 4, 5]
distData = sc.parallelize(data)
# type distData(ParallelCollectionRDD[0] at readRDDFromFile at PythonRDD.scala:274)
distData.map(lambda x: x*2)
# type PythonRDD[1] at RDD at PythonRDD.scala:53
distData.collect()
# return [1, 2, 3, 4, 5]

RDD 연산자

Spark의 경우, 기본적으로 Lazy evaluation 개념이 존재한다. 이는 행동 연산자를 호출하기 전까지는 실제로 실행하지 않는다는 것으로, 만약 행동 연산자 호출이 일어나게 되면 RDD 계보를 확인하고 이를 바탕으로 연산 그래프를 작성 및 계산한다.

변환 연산자

RDD의 데이터를 조작해 새로운 RDD를 생성(filter, map ...)

행동 연산자

계산 결과 반환 또는 RDD에 특정 작업을 수행하려고 실제 계산(count, foreach...)

profile
열심히 정리하는 습관 기르기..

0개의 댓글