spark나 MR에서 나중에 split 해도 되는 field가 있다면 최후의 최후에 split 하는게 성능에 큰 영향을 미친다.
예를 들어 user_id, feature가 있는데 user_id로 groupBy를 하고 싶은 상황이다. 이 때 feature는 n개로 split될 수 있다.
이를 초반에 split 하여 연산을 진행한다면 spark가 처리할 때 feature가 list든 set이든 개별 item에 대한 레퍼런싱을 추적하기 때문에 매우 느리다.
groupBy에서도 마찬가진데 reduceByKey가 빠르다는 사실 외에도, groupBy로 묶이는 value들은 iteration이 가능한 레퍼런스의 링크들이므로 처리가 느린 반면, 문자열이라면 문자열 한 개로 묶는게 빠르다.
reduceByKey를 쓰면 묶는 방법을 선택할 수 있다. 문자열 한 개로 묶는다면 레퍼런스 지점이 한 개가 된다.