[Spark] 스파크 RDD란? (Resilient Distributed Dataset) - 1

RDD - 탄력적인 분산 데이터셋이란?

스파크의 데이터 구조는 크게 3종류가 있습니다.

 - RDD (Resilient Distributed Dataset)

 - Dataframe

 - Dataset

 

RDD는 그 중 가장 처음으로 도입된 데이터 구조로 Spark 1.0부터 도입된 가장 기초적인 데이터 구조입니다. (현재 Spark 3.0)

 

이름을 풀어보면 이렇게 해석이 가능하겠습니다.

Resilient(탄력적인, 회복력 있는, 변하지 않는) : 메모리 내부에서 데이터가 손실 시 유실된 파티션을 재연산해 복구할 수 있음
Distributed(분산된) : 스파크 클러스터를 통하여, 메모리에 분산되어 저장됨
Data : 파일, 정보 등

 

 

RDD 특징 5가지

1. 데이터 추상화

데이터는 클러스터에 흩어져있지만 하나의 파일인것 처럼 사용이 가능합니다. 즉, 분산처리에 적합한 데이터셋이란걸 의미합니다.

 

2. Resilient & Immutable

탄력적이고 불변하는 성질이 있습니다.

데이터가 여러 노드에서 연산중에 노드하나에 장애가 발생해도 데이터가 불변, 즉 Immutable하면 문제가 일어날때 복원이 가능해집니다.

이러한 성질을 탄력적(Resilient)이라고 말할 수 있겠습니다.

 

3. Type-safe

컴파일시 Type을 판별할 수 있어 문제를 일찍 발견할 수 있습니다.

 

4. Unstructured / Structured Data

정형, 비정형 데이터를 담을 수 있습니다.

 

Unstructured Data - 로그, 자연어

Structured Data - RDB, DataFrame

 

5. Lazy

게으르다 - 결과가 필요할때까지 연산을 하지 않습니다.

Spark Operation은 Transform과 Action 2가지로 나눠집니다.

Transform과정은 Action이 주어졌을 때 실행이 됩니다.

 

 

왜 RDD를 쓸까?

  • 유연하다.
  • 짧은 코드로 할 수 있는게 많다.
  • 개발할 때 무엇보다는 어떻게에 대해 더 생각하게 한다 (how-to)
    • 게으른 연산 덕분에 데이터가 어떻게 변환될지 생각하게 된다.
    • 데이터가 지나갈 길을 닦는 느낌