데이터 엔지니어 이것저것

RDD 본문

오픈소스/Spark

RDD

pastime 2022. 12. 3. 11:17
728x90

RDD란 (Resillient Distributed Data)?

 

복원력(회복력) 있는 분산 데이터를 의미한다. (스파크의 데이터 세트와 다르다.)

(Spark에 가장 처음 도입된 데이터 구조)

 

기본적으로 RDD는 일련의 데이터이다.

그리고 행으로 나누어져있기에, 다른 컴퓨터에 분배될 수 있으며, 병렬로 처리된다.

즉. 여러 분산 노드에 걸쳐 저장되는 변경 불가능한 데이터 집합이다.

 

스파크가 작동중 노드가 고장나면, 새로운 노드를 회전시켜 그 자리를 대신한다.

 

이를 위해 SparkContext를 작성해야한다.

 

SparkContext는 RDD의 복원력과 분산 기능을 제공한다.

 

노드 장애 또는 하드웨어 장애를 처리하기위해 코드를 작성할 필요없고, 전체 클러스터에 데이터를 배포하는 방법을 파악하기 위해 코드를 작성할 필요도 없다.

 

spark context 내의 RDD 자체가 이를 위한 방법을 찾는다.

 

우리는 데이터를 어떻게 변환할까 하는것을 신경써야한다.

 

어떻게 RDD를 만드는것인가

명확한 목록을 준다

이는 실제에서는 유용하지 않다. 왜냐하면 모든 데이터 목록을 하드코딩 할 수 없고, 실제 데이터는 크기 때문이다.

하지만 테스트를 위한 용도로는 유용하다.

 

주로 파일, DB등을 이용해 데이터 목록을 전달한다.

 

 

RDD Operation

 

RDD는 2가지의 Operation을 지원한다.

  1. Transformation
    1. 기존의  RDD를 변경하여 새로운 RDD를 생성한다
    2. 리턴값이 RDD 이다
    3. map, filter 등 이 대표적이 예시이다
  2. Action
    1. RDD 값을 기반으로 무엇가를 계산하여 결과를 생성한다
    2. 리턴값이 DATA 또는 실행 결과이다.
    3. collection, count 등이 예시이다.

 

728x90

'오픈소스 > Spark' 카테고리의 다른 글

Spark Broadcast  (0) 2023.01.30
Spark Session  (0) 2023.01.08
Spark SQL  (0) 2023.01.08
spark groupByKey vs reduceByKey  (0) 2022.12.05
Spark란?  (1) 2022.11.23