4.6 요약
• Pair RDD는 키와 값 튜플로 구성된 RDD다.
• 스칼라의 Pair RDD는 Pair RDD에 특화된 함수들이 구현된 PairRDDFunctions 클래스의 객체로 암시적 변환된다.
• countByKey는 각 키의 출현 횟수를 담은 Map 객체를 반환한다.
• Pair RDD의 mapValues를 사용해 키를 그대로 두고 값만 변경할 수 있다.
• flatMapValues는 각 키 값을 0개 또는 한 개 이상의 값으로 매핑해 RDD에 포함된 요소 개수를 변경할 수 있다.
• reduceByKey와 foldByKey는 각 키의 모든 값을 동일한 타입의 단일 값으로 병합한다.
• aggregateByKey도 값을 병합하는 데 사용하지만, reduceByKey나 foldByKey와 달리 값 타입을 변경할 수 있다.
• 스파크의 데이터 파티셔닝은 데이터를 여러 클러스터 노드로 분할하는 메커니즘이다.
• 스파크에서 RDD의 파티션 개수는 매우 중요한데, 이는 파티션 개수가 데이터를 클러스터에 분배하는 과정에 영향을 미칠 뿐만 아니라 해당 RDD에 변환 연산을 실행할 태스크 개수와 직결되기 때문이다.
• RDD의 데이터 파티셔닝은 RDD의 각 요소에 파티션 번호를 할당하는 Partitioner 객체로 수행한다. 스파크는 Partitioner의 구현체(implementation)로 HashPartitioner와 RangePartitioner를 제공한다.
• 스파크의 셔플링은 파티션 간 물리적인 데이터 이동을 의미한다. 셔플링은 새로운 RDD 파티션을 만들려고 여러 파티션의 데이터를 합쳐야 할 때 발생한다.