본문 바로가기
SW/Data Engineering (Spark)

1.1. RDD(Resilient Distributed Dataset)

by 라꾸스떼(YR) 2020. 12. 8.
반응형

RDD : 스파크가 사용하는 핵심 데이터 모델. 다수의 서버에 걸쳐 분산 방식으로 저장된 데이터 요소돌의 집합을 의미. 병렬 처리 가능, 장애가 발생할 경우에도 스스로 복구될 수 있는 내성.

스파크는 작업을 수행할 때 파티션(RDD를 구성하는 단위) 단위로 나눠서 병렬로 처리를 수행.

하나의 RDD가 이렇게 여러 파티션으로 나눠져 다수의 서버에서 처리되다 보니 작업 도중 일부 파티션에 장애가 발생해서 데이터가 유실될 수 있는데, 스파크는 손상된 RDD를 원래 상태로 다시 복원하기 위해 RDD의 생성 과정을 기록해 뒀다가 다시 복구해주는 기능을 가지고 있음. 단, 복구 수행을 위해서는 한번 생성된 RDD가 바뀌지 않아야 함.

 

RDD는 스파크의 데이터 모델이면서 동시에 프로그래밍 API

map, flatMap과 같은 메서드를 이용해 내부에 포함된 모든 데이터에 특정 연산을 적용할 수 있음.

기존 RDD의 데이터가 바뀌는 것이 아니고 변경된 숫자로 구성된 새로운 RDD를 생성. 즉, 덧셈이나 곱셈같은 특정 연산을 수행하면 기존 RDD와 새로운 RDD, 2개의 RDD가 되는 것.

RDD 생성 작업을 기록해두는 것을 리니지(lineage)라고 함.

 

[RDD 생성 방법]

1. 메모리에 생성된 데이터를 이용

rdd = sc.parallelize([ ... ])

 

2. 로컬 파일시스템이나 HDFS 등을 읽어서 생성

rdd = sc.textFile(“PATH”)

 

3. 기존 RDD로부터 또 다른 RDD 생성

rdd1 = rdd.map(lambda s: s.upper())

 

[RDD 연산]

“트랜스포메이션(Transformatrion)”“액션(Action)”이라는 두 종류. (스파크 RDD API문서에서는 구분되어 있지는 않음.)

- 트랜포메이션 연산이란 RDD에 변형을 가해 새로운 RDD를 생성하는 연산. 이러한 생성 과정을 기록해서 복구에 사용. 변환 연산이 가진 또 다른 중요한 특징은 연산이 호출되는 시점에 바로 실행되는 것이 아니고 RDD에 대한 생성 계보만 만들면서 쌓여있다가 “액션”에 해당하는 연산이 호출될 때 비로소 한거번에 실행된다. 지연(Lazy) 실행 방식.

- 액션 연산이란 그 연산의 결과로 RDD가 아닌 다른 값을 반환하거나 아예 반환하지 않는 연산을 의미.

RDD는 스파크에서 사용하는 데이터 모델이면서 동시에 스파크가 제공하는 실제 클래스의 이름.

 

 

 

출처 : 빅데이터 분석을 위한 스파크2 프로그래밍

 

스파크2 프로그래밍 - 교보문고

하둡으로 대표되던 빅데이터 처리 기술은 빅데이터와 머신러닝, 딥러닝의 붐을 타고 믿을 수 없을 만큼 빠른 속도로 발전해가고 있습니다. 작년 봄 이 책의 초판이 출시되던 해에 스파크는 이미

www.kyobobook.co.kr

 

반응형

'SW > Data Engineering (Spark)' 카테고리의 다른 글

1장. 스파크 소개  (0) 2020.12.08

댓글