@@ -189,6 +189,36 @@ public void sortByKey() {
189189 Assert .assertEquals (new Tuple2 <Integer , Integer >(3 , 2 ), sortedPairs .get (2 ));
190190 }
191191
192+ @ Test
193+ public void repartitionAndSortWithinPartitions () {
194+ List <Tuple2 <Integer , Integer >> pairs = new ArrayList <Tuple2 <Integer , Integer >>();
195+ pairs .add (new Tuple2 <Integer , Integer >(0 , 5 ));
196+ pairs .add (new Tuple2 <Integer , Integer >(3 , 8 ));
197+ pairs .add (new Tuple2 <Integer , Integer >(2 , 6 ));
198+ pairs .add (new Tuple2 <Integer , Integer >(0 , 8 ));
199+ pairs .add (new Tuple2 <Integer , Integer >(3 , 8 ));
200+ pairs .add (new Tuple2 <Integer , Integer >(1 , 3 ));
201+
202+ JavaPairRDD <Integer , Integer > rdd = sc .parallelizePairs (pairs );
203+
204+ Partitioner partitioner = new Partitioner () {
205+ public int numPartitions () {
206+ return 2 ;
207+ }
208+ public int getPartition (Object key ) {
209+ return ((Integer )key ).intValue ();
210+ }
211+ };
212+
213+ JavaPairRDD <Integer , Integer > repartitioned =
214+ rdd .repartitionAndSortWithinPartitions (partitioner );
215+ List <List <Tuple2 <Integer , Integer >>> partitions = repartitioned .glom ().collect ();
216+ Assert .assertEquals (partitions .get (0 ), Arrays .asList (new Tuple2 <Integer , Integer >(0 , 5 ),
217+ new Tuple2 <Integer , Integer >(0 , 8 ), new Tuple2 <Integer , Integer >(2 , 6 )));
218+ Assert .assertEquals (partitions .get (1 ), Arrays .asList (new Tuple2 <Integer , Integer >(1 , 3 ),
219+ new Tuple2 <Integer , Integer >(3 , 8 ), new Tuple2 <Integer , Integer >(3 , 8 )));
220+ }
221+
192222 @ Test
193223 public void emptyRDD () {
194224 JavaRDD <String > rdd = sc .emptyRDD ();
0 commit comments