인메모리 기반의 대용량 데이터 고속 처리 엔진으로 범용 분산 클러스터 컴퓨팅 프레임워크
-수평적 확장 가능
-속도가 느려도 많은 데이터의 연산이 가능 ( out of memory 발생 x )
Driver program - Cluster manager - Worker node
[프로세스 조직] - [소통구( 스케쥴링 / 자원관리 )] - [실제 연산 실행]
ex) 지역별 택시 운행수
- key: 지역ID
- value: 운행수
- Reduce
- Fold
- GroupBy
- Aggregate(zerovalue,seqOp,combOp)
- 파티션에 누적할 시작 값, 타입 변경함수, 합치는 함수
- reduceByKey() : 키 값을 기준으로 테스크 처리
- groupByKey() : 키 값을 기준으로 value 묶기
- sortByKey() : 키 값을 기준으로 정렬
- keys() : 키 값 추출
- values() : value 값 추출
- rightOuterJoin : 오른쪽에 있는 데이터 모두 출력
- leftOuterJoin : 왼쪽에 있는 데이터 모두 출력
- substractByKey :
(결과 값으로 새로운 RDD를 반환 / 지연 실행 -> 메모리 최대 활용 ( in-memory))
- 1:1 변환
- 정렬이 필요하지 않은 경우
- filter() : value를 포함하는지 안하는지를 활용하는 기능
- map()
- flatmap()
- sample() : 무작위로 value값을 추출하고자 할때
- ex) a.sample(True, .5 ,seed=n)
- union() : value 합치기
- suffling : 여러노드에서 데이터를 합칠 때 발생함 ( 다른 요소 or RDD 참조할 때)
- collect() : RDD 내의 value 값을 추출해준다
- countByValue() : value 값의 개수 카운트
- take() : head()와 같은 기능
- first(): 첫번째 value 값
- distinct() : unique() 같은 기능
- foreach()