우노
[Spark] Collect 와 Count 의 차이 본문
RDD Operation
- Spark 의 RDD 는 2가지 Operation(Transformation, Action) 을 사용해 조작할 수 있습니다
- Transformation
- 기존의 RDD 를 변경하여 새로운 RDD 를 생성하는 것입니다.
- 즉, 리턴값이 RDD 입니다.
- map, filter 등을 예로 들 수 있습니다.
- 기존의 RDD 를 변경하여 새로운 RDD 를 생성하는 것입니다.
- Action
- RDD 값을 기반으로 무엇인가를 계산해서, 결과를 생성하는 것입니다.
- 즉, 리턴값이 데이터 또는 실행 결과입니다.
- collect, count 등을 예로 들 수 있습니다.
- RDD 값을 기반으로 무엇인가를 계산해서, 결과를 생성하는 것입니다.
- Transformation
- 이러한, RDD 동작 원리의 핵심은 Lazy Evaluation (느긋한 연산) 입니다.
- 즉, RDD 는 Action 연산자를 만나기 전까지는, Transformation 연산자가 아무리 쌓여도 처리하지 않습니다.
- 따라서, Executor 에 할당된 RDD 의 내용을 확인하기 위해서는, Action 연산(collect, count, etc)이 필요합니다.
collect()
- collect() 함수는, Executor 에 할당된 RDD 를 모두 Driver Node 로 취합하는 Action 이기 때문에, out of memory 가 발생할 수 있습니다.
- 데이터 세트가 Drvier Memory 에 들어가지 못하는 크기라면, 사용하지 않는게 좋습니다.
count()
- count() 함수는, Executor 에 할당된 RDD 의 개수를 합산하고, 합산된 정수를 반환하는 Action 이기 때문에, 데이터 전송이 최소화됩니다.
'Data > Spark' 카테고리의 다른 글
[Spark] sc.textFile minPartitions 할당 (0) | 2021.08.26 |
---|---|
[Spark] Yarn log 확인 (0) | 2021.08.24 |
[Spark] Map to json (0) | 2021.05.28 |
[Spark] spark-shell 에서 HttpClient를 사용해 post request 보내기 (0) | 2021.05.28 |
[Spark] Spark 실행 시간 측정 (0) | 2021.03.29 |
Comments