@Override public Dataset<Triple<K, V, S>> output(OutputHint... outputHints) { Flow flow = input.getFlow(); TopPerKey<IN, K, V, S, W> top = new TopPerKey<>(flow, name, input, keyFn, valueFn, scoreFn, windowing, Sets.newHashSet(outputHints)); flow.add(top); return top.output(); } }
@Override public Dataset<Triple<K, V, S>> output(OutputHint... outputHints) { Flow flow = input.getFlow(); TopPerKey<IN, K, V, S, W> top = new TopPerKey<>(flow, name, input, keyFn, valueFn, scoreFn, windowing, Sets.newHashSet(outputHints)); flow.add(top); return top.output(); } }
@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<Triple<String, Long, Long>> result = TopPerKey.named("TopPerKey1") .of(dataset) .keyBy(s -> s) .valueBy(s -> 1L) .scoreBy(s -> 1L) .windowBy(windowing) .output(); assertEquals(flow, result.getFlow()); assertEquals(1, flow.size()); TopPerKey tpk = (TopPerKey) Iterables.getOnlyElement(flow.operators()); assertEquals(flow, tpk.getFlow()); assertEquals("TopPerKey1", tpk.getName()); assertNotNull(tpk.getKeyExtractor()); assertNotNull(tpk.getValueExtractor()); assertNotNull(tpk.getScoreExtractor()); assertEquals(result, tpk.output()); assertSame(windowing, tpk.getWindowing()); }