-
RDD: resilient distributed data
- 스파크에서 in-memory 기반으로 분산환경에서 대용량 데이터를 처리하기 위해 만든 일종의 자료구조
- 목적: 뷴산 컬랙션의 성질과 장애 내성을 추상화 -> 직관적이고 효율적인 대규모 데이터 셋 처리
-
RDD 연산 : Lazy execution
- 연산을 즉시 처리하지 않고, 계산의 결과값이 필요할때까지 계산을 늦추는 기법
-
Spark는 연산들을 바로하지 않고, 계산과정을 Lineage에 저장한 뒤, 마지막에 결과를 보여주거나 반환할 때 계산을 실행한다.
- 변환 연산자들의 연산과정을 RDD lineage에 저장
- 행동 연산자가 호출되면 lineage를 토대로 최적화된 실행과정을 만듦
- 이를 토대로 최적화된 연산 실행
-
행동 연산자: count, collect와 같이 결과를 반환하는 연산
- 최종 결과 값을 반환하거나 외부 저장소에 값을 기록하는 연산
- 호출 시 최적화된 경로로 계산을 진행한 뒤, 최종 결과를 return => " RDD in, Other out "
-
변환 연산자: map, filter와 같이 결과를 바로 안 보여줘도 되는 연산
- 불변성을 가지는 RDD의 형태를 변형하는 연산
- 기존의 RDD를 입력받아서, 새로운 RDD를 return => " RDD in, RDD out "
- Action연산이 호출될 때까지는 실제로 수행되지 않음(Lazy execution)
-
RDD 연산
1. Map
rdd.map(lambda x : x + 1)
# (1, 2, 3, 3) 을 가지고 있는 Rdd에 대해 연산 시 return: (2, 3, 4, 4)