반응형
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 |