@Test public void testBuild_ImplicitName() { Flow flow = Flow.create("TEST"); Dataset<String> dataset = Util.createMockDataset(flow, 2); ReduceStateByKey.of(dataset) .keyBy(s -> s) .valueBy(s -> 1L) .stateFactory(WordCountState::new) .mergeStatesBy(WordCountState::combine) .output(); ReduceStateByKey reduce = (ReduceStateByKey) flow.operators().iterator().next(); assertEquals("ReduceStateByKey", reduce.getName()); }
@Test public void testWindow_applyIf() { Flow flow = Flow.create("TEST"); Dataset<String> dataset = Util.createMockDataset(flow, 2); ReduceStateByKey.of(dataset) .keyBy(s -> s) .valueBy(s -> 1L) .stateFactory(WordCountState::new) .mergeStatesBy(WordCountState::combine) .applyIf(true, b -> b.windowBy(Time.of(Duration.ofHours(1)))) .output(); ReduceStateByKey reduce = (ReduceStateByKey) flow.operators().iterator().next(); assertTrue(reduce.getWindowing() instanceof Time); }
@Override protected Dataset<Pair<String, Integer>> getOutput(Dataset<Integer> input) { return ReduceStateByKey.of(input) .keyBy(e -> "") .valueBy(e -> e) .stateFactory(SortState::new) .mergeStatesBy(SortState::combine) .output(); }
@Override protected Dataset<Pair<String, Integer>> getOutput(Dataset<Integer> input) { return ReduceStateByKey.of(input) .keyBy(e -> "") .valueBy(e -> e) .stateFactory(SortState::new) .mergeStatesBy(SortState::combine) .output(); }
@Override protected Dataset<Pair<String, Integer>> getOutput(Dataset<Integer> input) { return ReduceStateByKey.of(input) .keyBy(e -> "") .valueBy(e -> e) .stateFactory(CountingSortState::new) .mergeStatesBy((target, others) -> {}) .output(); }
@Override protected Dataset<Pair<String, Integer>> getOutput(Dataset<Integer> input) { return ReduceStateByKey.of(input) .keyBy(e -> "") .valueBy(e -> e) .stateFactory(CountingSortState::new) .mergeStatesBy((target, others) -> {}) .output(); }