@Override public <W extends Window> DatasetBuilder5<IN, KEY, VALUE, OUT, W> windowBy(Windowing<IN, W> windowing) { return new DatasetBuilder5<>( name, input, keyExtractor, keyClass, valueExtractor, reducer, Objects.requireNonNull(windowing), valuesComparator); }
@Override protected Dataset<Set<Integer>> getOutput(Dataset<Integer> input) { return ReduceByKey.of(input) .keyBy(e -> e % 2, Integer.class) .valueBy(e -> e) .reduceBy(s -> s.collect(Collectors.toSet())) .windowBy(Count.of(3)) .outputValues(); }
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofDays(1))) .output();
.combineBy(Sums.ofInts()) .windowBy(windowing) .output();
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofMillis(10))) .output();
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofMillis(10))) .output();
.combineBy(Sums.ofInts()) .windowBy(windowing) .output();
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofSeconds(1))) .output();
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofSeconds(1))) .output();
.combineBy(e -> null) .windowBy(Time.of(Duration.ofSeconds(1))) .output();
}) .windowBy(Time.of(Duration.ofMillis(5))) .output();
.combineBy(Sums.ofLongs()) .windowBy(TimeSliding.of(Duration.ofMillis(10), Duration.ofMillis(5))) .output();
.reduceBy(Sums.ofLongs()) .windowBy(TimeSliding.of(Duration.ofMillis(10), Duration.ofMillis(5))) .output();
.reduceBy(s -> s.collect(Collectors.toSet())) .windowBy(Count.of(3)) .output();
.reduceBy(values -> 1L) .windowBy(Time.of(Duration.ofSeconds(1))) .output(new Util.TestHint(), new Util.TestHint2());
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofSeconds(1))) .output();
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofMillis(5))) .output();
.combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofMillis(5))) .output();
@Override protected Dataset<Triple<Instant, Type, Long>> getOutput(Dataset<Triple<Instant, Type, String>> input) { // distinct implemented using raw ReduceStateByKey input = AssignEventTime.of(input).using(t -> t.getFirst().toEpochMilli()).output(); Dataset<Pair<ComparablePair<Type, String>, Object>> pairs = ReduceStateByKey.of(input) .keyBy(t -> new ComparablePair<>(t.getSecond(), t.getThird())) .valueBy(t -> null) .stateFactory(DistinctState::new) .mergeStatesBy((t, os) -> {}) .windowBy(Time.of(Duration.ofHours(1))) .output(); Dataset<ComparablePair<Type, String>> distinct = MapElements.of(pairs) .using(Pair::getFirst) .output(); Dataset<Pair<Type, Long>> reduced = ReduceByKey.of(distinct) .keyBy(ComparablePair::getFirst) .valueBy(p -> 1L) .combineBy(Sums.ofLongs()) .windowBy(Time.of(Duration.ofHours(1))) .output(); // extract window timestamp return FlatMap.of(reduced) .using((Pair<Type, Long> p, Collector<Triple<Instant, Type, Long>> ctx) -> { long windowEnd = ((TimeInterval) ctx.getWindow()).getEndMillis(); ctx.collect(Triple.of(Instant.ofEpochMilli(windowEnd), p.getFirst(), p.getSecond())); }) .output(); }