RDD는 Resilient Distributed Dataset의 줄임말로 분산 데이터 모델이다.
RDD는 의존성, 파티션, 연산 함수라는 세 가지 특성이 있다.
어떤 입력을 필요로 하고 현재의 RDD가 어떻게 만들어지는지 스파크에게 가르쳐 주는 것을 의미
결과를 새로 만들어야 할 경우 스파크는 의존성 정보를 참고하고 연산을 다시 반복하여 RDD 다시 만듦
이를 통해 RDD에 유연성을 부여함
스파크에게 작업을 나눠서 이그제큐터들에게 분산해 파티션별로 병렬 연산을 할 수 있게 함
이를 통해, 작업의 효율성 증진시킴
RDD에 저장되는 데이터를 Iterator[T]형태로 만들어 주는 연산 함수를 가지고 있음
위의 스파크의 핵심 특성들에는 연산 함수 및 연산식의 불투명성 등과 같은 문제가 있었음
이를 해결하기 위해, 스파크 2.x부터 여러 개념을 도입함
이렇게, 스파크는 구조 확립을 통해 더 나은 성능, 공간 효율성 및 명료한 표현 등 이득을 얻음
ex) 스파크에게 직접 연산을 명령하기 vs 무엇을 할지(작업 자체)를 명령하기