RDD란?


RDD Operator

- Tranceformation : 데이터의 흐름, 계보를 만듬

- Action Transformation에서 작성된 계보를 따라 데이터 처리하여 결과를 생성함 (lazy-execution)


Actions == transformations의 결과를 가져오는 과정

선 디자인 후 연산이 시작된다 >>>>> 미리 계획이 되어 있었기 때문에 연산 속도가 매우 빠르다.


Narrow dependency / Wide dependency

Narrow dependency 형태로 코딩해야 한다.

- 책상 한자리에서 다 처리할 수 있는 일은 모아서 하는 것이 좋다는 개념

- 네트워크를 안타고 메모리의 속도로 동작해서 빠르다.

- 파티션이 부서져도 해당 노드에서 바로 복원 가능하다.

- map, filter, union, join with inputs co-partitioned

Wide dependency

- 여러 책상에 있는 자료를 훑어와야 한다는 개념

- 네트워크의 속도로 동작해서 느리다.

- 노드끼리 셔플이 일어나야 한다.

- 파티션이 부서지면 계산 비용이 비싸다.

- groupByKey, join with inputs not co-partitioned


>>>>dependency의 의미

메모리 안에서 처리 될 일들을 먼저 처리하고 네트워킹을 타거나 IO를 타는 일을 나중에 하도록 코딩을 해아한다는 의미.

네트워킹, IO시간을 메모리와 번갈아 가면서 구동하면 속도가 많이 느려지므로 최대한 메모리 내에서 할 수 있는 일을 한 후에 wide denpendency를 활용해야 한다는 의미.


RDD Persistence (더 학습이 필요..)

- RDD가 Action으로 수행될 때마다 다시금 소스에서 부터 다시 로드되서 수행됨.

- RDD를 저장해놓고 사용하는 기능으로 persist()와 cache()라는 두 가지 오퍼레이셔을 지원

- 저장 옵션을 MEMORY_ONLY로 한 옵션과 동일

- 디폴트는 메모리에 저장하고, 옵션으로 디스크를 지정

- 메모리에 저장할 때, RDD를 RAW(원본 형식)으로 저장할 것인지 자바의 Serialized(직렬화)된 형태로 저장할 지 선택 

>>>오류 발생시 lineage의 맨 처음부터 수행하는 것이 아니라 중간 지점을 기억해 놓고 그 기억시점부터 다시 수행시키는 기술, 메모리를 사용하지만 속도가 더 빠른 것은 당연한 일

'Data Engineer > Spark' 카테고리의 다른 글

Spark STREAM??  (0) 2016.05.12
Spark SQL이란 ?  (0) 2016.05.12
Spark - RDD란 !!?  (0) 2016.05.09
Spark - 클러스터 설정/ 구축  (1) 2016.05.09
Spark 설치 방법 (우분투 ubuntu 환경)  (0) 2016.05.09

+ Recent posts