@SuppressWarnings("unchecked") @Test public void testGroupByKeyAndWindow() { List<List<Tuple2<String, Integer>>> inputData = stringIntKVStream; List<List<Tuple2<String, List<Integer>>>> expected = Arrays.asList( Arrays.asList( new Tuple2<>("california", Arrays.asList(1, 3)), new Tuple2<>("new york", Arrays.asList(1, 4)) ), Arrays.asList( new Tuple2<>("california", Arrays.asList(1, 3, 5, 5)), new Tuple2<>("new york", Arrays.asList(1, 1, 3, 4)) ), Arrays.asList( new Tuple2<>("california", Arrays.asList(5, 5)), new Tuple2<>("new york", Arrays.asList(1, 3)) ) ); JavaDStream<Tuple2<String, Integer>> stream = JavaTestUtils.attachTestInputStream(ssc, inputData, 1); JavaPairDStream<String, Integer> pairStream = JavaPairDStream.fromJavaDStream(stream); JavaPairDStream<String, Iterable<Integer>> groupWindowed = pairStream.groupByKeyAndWindow(new Duration(2000), new Duration(1000)); JavaTestUtils.attachTestOutputStream(groupWindowed); List<List<Tuple2<String, List<Integer>>>> result = JavaTestUtils.runStreams(ssc, 3, 3); Assert.assertEquals(expected.size(), result.size()); for (int i = 0; i < result.size(); i++) { Assert.assertEquals(convert(expected.get(i)), convert(result.get(i))); } }
@SuppressWarnings("unchecked") @Test public void testGroupByKeyAndWindow() { List<List<Tuple2<String, Integer>>> inputData = stringIntKVStream; List<List<Tuple2<String, List<Integer>>>> expected = Arrays.asList( Arrays.asList( new Tuple2<>("california", Arrays.asList(1, 3)), new Tuple2<>("new york", Arrays.asList(1, 4)) ), Arrays.asList( new Tuple2<>("california", Arrays.asList(1, 3, 5, 5)), new Tuple2<>("new york", Arrays.asList(1, 1, 3, 4)) ), Arrays.asList( new Tuple2<>("california", Arrays.asList(5, 5)), new Tuple2<>("new york", Arrays.asList(1, 3)) ) ); JavaDStream<Tuple2<String, Integer>> stream = JavaTestUtils.attachTestInputStream(ssc, inputData, 1); JavaPairDStream<String, Integer> pairStream = JavaPairDStream.fromJavaDStream(stream); JavaPairDStream<String, Iterable<Integer>> groupWindowed = pairStream.groupByKeyAndWindow(new Duration(2000), new Duration(1000)); JavaTestUtils.attachTestOutputStream(groupWindowed); List<List<Tuple2<String, List<Integer>>>> result = JavaTestUtils.runStreams(ssc, 3, 3); Assert.assertEquals(expected.size(), result.size()); for (int i = 0; i < result.size(); i++) { Assert.assertEquals(convert(expected.get(i)), convert(result.get(i))); } }