더북(TheBook)

sortBy 메서드에 전달한 인수를 자세히 살펴보자. _._2는 Pair RDD 값, 즉 (매출액, 상품 정보 배열) 쌍으로 구성된 튜플을 가리킨다. _._2._2(1)은 이 튜플 중 상품 정보 배열의 두 번째 요소(즉, 상품 이름)를 참조한다. 또는 totalsAndProds RDD에서 상품 이름을 키로 끄집어낸 후[즉, keyBy(_._2._2(1))을 호출한 후] sortByKey를 호출한 결과도 이와 동일하다. 이후 sortedProds RDD를 다른 RDD로 매핑해도 요소의 순서는 유지된다.

하지만 키가 복합 객체(complex object)라면 정렬 작업이 약간 까다로울 수 있다. 암시적 변환으로 키-값 튜플로 구성된 RDD에서만 Pair RDD의 변환 연산자를 사용할 수 있는 것처럼, sortByKeyrepartitionAndSortWithinPartition도 정렬 가능한(orderable) 클래스를 PairRDD 키로 사용할 때만 호출할 수 있다.

Note

자바에서 sortByKey를 사용하려면 Comparator 인터페이스(http://mng.bz/5Suh)의 객체를 구현해서 전달해야 한다. Comparator는 자바에서 객체를 정렬하는 표준 방식이다. 또 자바의 JavaRDD 클래스는 sortBy를 제공하지 않는다.

 

스칼라에서는 Ordered 트레잇(trait) 또는 Ordering 트레잇을 이용해 클래스를 정렬 가능하게 만들고, 이 클래스를 키 또는 값으로 가진 RDD를 정렬할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.