@SuppressWarnings("unchecked") RSBKReducer( ReduceStateByKey operator, StateContext stateContext, Windowing windowing, FlinkAccumulatorFactory accumulatorFactory, Settings settings) { this.stateFactory = operator.getStateFactory(); this.stateCombiner = operator.getStateMerger(); this.stateContext = stateContext; this.windowing = windowing; this.trigger = windowing.getTrigger(); this.accumulatorFactory = accumulatorFactory; this.settings = settings; }
this.processing = new ProcessingState( output, scheduler, requireNonNull(operator.getStateFactory()), requireNonNull(operator.getStateMerger()), stateContext,
this.processing = new ProcessingState( output, scheduler, requireNonNull(operator.getStateFactory()), requireNonNull(operator.getStateMerger()), stateContext,
StateFactory<?, ?, State<?, ?>> stateFactory = operator.getStateFactory(); StateMerger<?, ?, State<?, ?>> stateCombiner = operator.getStateMerger();
@Test public void testBuild() { Flow flow = Flow.create("TEST"); Dataset<String> dataset = Util.createMockDataset(flow, 2); Time<String> windowing = Time.of(Duration.ofHours(1)); Dataset<Pair<String, Long>> reduced = ReduceStateByKey.named("ReduceStateByKey1") .of(dataset) .keyBy(s -> s) .valueBy(s -> 1L) .stateFactory(WordCountState::new) .mergeStatesBy(WordCountState::combine) .windowBy(windowing) .output(); assertEquals(flow, reduced.getFlow()); assertEquals(1, flow.size()); ReduceStateByKey reduce = (ReduceStateByKey) flow.operators().iterator().next(); assertEquals(flow, reduce.getFlow()); assertEquals("ReduceStateByKey1", reduce.getName()); assertNotNull(reduce.getKeyExtractor()); assertNotNull(reduce.getValueExtractor()); assertNotNull(reduce.getStateMerger()); assertNotNull(reduce.getStateFactory()); assertEquals(reduced, reduce.output()); assertSame(windowing, reduce.getWindowing()); }
StateFactory<?, ?, State<?, ?>> stateFactory = origOperator.getStateFactory(); StateMerger<?, ?, State<?, ?>> stateCombiner = origOperator.getStateMerger();