spark

Spark - RDD

PSAwesome 2021. 1. 5. 13:45
반응형

 

RDD

읽기 전용으로 분할된 record의 모음

클러스터 노드들 간에 파티션된 엘리먼트의 컬렉션이며 분산 처리 단위는 파티션

scala, java, python 언어의 객체들을 포함

Transformation(중간), Action(종단)의 연산

 

Transformation - 중간 연산

현재의 RDD에서 새로운 RDD를 생성

변환 전 RDD 한 요소마다 처리하는 연산

method 명 설명 매개변수 비고
filter 조건에 부합하지 않는 요소는 버림 함수  
map 요소를 가공
ex) 타입의 변환, toUpperCase ...
함수  
flatMap 요소 가공 후 list 모음의 반환을 flatten 하게 반환
ex) [[1,2,3], [5,6,7], [8,9,0]] -> [1,2,3,5,6,7,8,9,0]
함수  
zip 두 개의 RDD를 조합하여 한 쪽의 RDD 요소 값을 키로,
다른 RDD의 요소 값을 value로 묶음
함수 조건
1. 파티션 수가 같다.
2. 파티션에 있는 요소의 수도 같다.
mapPartitions map의 가공 단위가 partition 단위 함수 병렬처리가 가능한 구조인 듯
mapPartitionsWithIndex mapPartitions + Index 함수  
sample 샘플링된 RDD 반환 withReplacement,
fraction,
seed
 
union 두 RDD에 있는 데이터 반환
(합집합)
otherDataset  
intersection 양쪽 RDD에 모두 있는 데이터 반환
(교집합)
otherDataset  
distinct 중복값 제거 [numTasks]  
groupByKey (K, V) -> (K, Iterator<V>) 함수 sql group by와 유사

변환 전 RDD를 그룹화 하여 처리하는 연산

method 명 설명 매개변수
reduceByKey 같은 키를 가지는 요소를 aggregation 함수
join 두 개의 RDD에서 같은 키를 가지는 요소끼리 merge  
reduce 요소들의 최종 연산으로 하나의 데이터 반환 (aggregate)  
collect 모든 RDD를 array 형태로 반환  
count 데이터 총 개수 반환  
first() 첫 번째 요소 반환  
take n개의 데이터 반환 int n
takeSample num개의 데이터 샘플 반환 withReplacement,
num,
[seed]
takeOrdered 데이터 sort 후 n개를 반환 n,
[ordering]
saveAsTextFile 데이터를 파일로 저장 file path
saveAsObjectFile 데이터를 Object file로 저장 file path
saveAsSequenceFile 데이터를 Sequence file로 저장 file path
countByKey RDD가 (K, V)형태일 때, 각 key의 숫자 반환  
foreach 각 요소 순차 처리 함수

 

Action - 종단 연산

최종 결과값을 반환

RDD의 요소로 결과를 계산하여 드라이버 프로그램에 반환하거나 외부 스토리지에 저장

 

Partition

하나의 RDD가 여러 개의 파티션으로 나누어 짐

기본 파티셔너로 Hash, Range가 있고 사용자 정의 가능

 

Lineage 

RDD 연산의 순서를 정의

fault-tolerant 확보

계보를 기록해두면 동일한 RDD (복구)생성이 가능 

 

Lazy Execution 가능

Transformation 연산을 실행할 때 계보만 생성

Action 연산을 실행할 때 생성된 Lineage를 실행

반응형

'spark' 카테고리의 다른 글

install spark on mac os - 스파크 시작  (0) 2022.12.20
Spark ML package  (0) 2021.01.19
아파치 스파크 첫 걸음  (0) 2021.01.04