@@ -322,6 +322,27 @@ public Boolean call(Integer x) {
322322 Assert .assertEquals (2 , Iterables .size (oddsAndEvens .lookup (true ).get (0 ))); // Evens
323323 Assert .assertEquals (5 , Iterables .size (oddsAndEvens .lookup (false ).get (0 ))); // Odds
324324 }
325+
326+ @ Test
327+ public void groupByOnPairRDD () {
328+ JavaRDD <Integer > rdd = sc .parallelize (Arrays .asList (1 , 1 , 2 , 3 , 5 , 8 , 13 ));
329+ Function <scala .Tuple2 <Integer , Integer >, Boolean > areOdd = new Function <scala .Tuple2 <Integer , Integer >, Boolean >() {
330+ @ Override
331+ public Boolean call (scala .Tuple2 <Integer , Integer > x ) {
332+ return x ._1 % 2 == 0 && x ._2 % 2 == 0 ;
333+ }
334+ };
335+ JavaPairRDD <Integer , Integer > pairrdd = rdd .zip (rdd );
336+ JavaPairRDD <Boolean , Iterable <scala .Tuple2 <Integer , Integer >>> oddsAndEvens = pairrdd .groupBy (areOdd );
337+ Assert .assertEquals (2 , oddsAndEvens .count ());
338+ Assert .assertEquals (2 , Iterables .size (oddsAndEvens .lookup (true ).get (0 ))); // Evens
339+ Assert .assertEquals (5 , Iterables .size (oddsAndEvens .lookup (false ).get (0 ))); // Odds
340+
341+ oddsAndEvens = pairrdd .groupBy (areOdd , 1 );
342+ Assert .assertEquals (2 , oddsAndEvens .count ());
343+ Assert .assertEquals (2 , Iterables .size (oddsAndEvens .lookup (true ).get (0 ))); // Evens
344+ Assert .assertEquals (5 , Iterables .size (oddsAndEvens .lookup (false ).get (0 ))); // Odds
345+ }
325346
326347 @ SuppressWarnings ("unchecked" )
327348 @ Test
0 commit comments