spark에서 groupByKey를 사용할 때 성능에 많이 떨어질 수 있다.
좋은 설명을 포함한 링크가 있다.
groupByKey를 살펴보면, 키 값으로 분류를 하고 모든 계산을 하나씩 진행한다. 따라서 모든 데이터 복사가 많이 일어날 수 있다.
반면 reduceByKey에서는 계산을 진행할때 데이터 셔플 전에 노드 내에서 조금 계산해놓는다. 따라서 불필요한 데이터가 전달되지 않기 때문에 네트웍 트래픽, 복사 비용이 groupByKey보다 줄어든다.
마치 map/reduce의 custom combiner와 비슷한 느낌으로 동작한다.
http://www.admin-magazine.com/HPC/Articles/MapReduce-and-Hadoop
'scala' 카테고리의 다른 글
[play2] import play.db.Database 에러 (0) | 2017.10.30 |
---|---|
[sbt] dependency 추가시 %%(double percent)와 %(percent) 차이점 (0) | 2017.10.30 |
[spark2] mapPartitionWithIndex 예제 (0) | 2017.08.10 |
[scala] Product 이해하기 (0) | 2017.08.10 |
[spark] [펌질] wide dependecy, narrow dependency (0) | 2017.08.08 |