/** * Returns stream of aggregated results based on the given window configuration. * * @param windowConfig window configuration like window length and slide length. * @param windowStoreFactory intermediary tuple store for storing tuples for windowing * @param inputFields input fields * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream window(WindowConfig windowConfig, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(windowConfig, windowStoreFactory, inputFields, aggregator, functionFields, true); }

/** * Returns a stream of tuples which are aggregated results of a sliding window with every {@code windowCount} of tuples * and slides the window after {@code slideCount}. * * @param windowCount represents tuples count of a window * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream slidingWindow(int windowCount, int slideCount, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(SlidingCountWindow.of(windowCount, slideCount), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of tuples which are aggregated results of a window that tumbles at duration of {@code windowDuration} * * @param windowDuration represents tumbling window duration configuration * @param windowStoreFactory intermediary tuple store for storing windowing tuples * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream tumblingWindow(BaseWindowedBolt.Duration windowDuration, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(TumblingDurationWindow.of(windowDuration), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of tuples which are aggregated results of a tumbling window with every {@code windowCount} of tuples. * * @param windowCount represents number of tuples in the window * @param windowStoreFactory intermediary tuple store for storing windowing tuples * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream tumblingWindow(int windowCount, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(TumblingCountWindow.of(windowCount), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of tuples which are aggregated results of a window which slides at duration of {@code slidingInterval} * and completes a window at {@code windowDuration} * * @param windowDuration represents window duration configuration * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream slidingWindow(BaseWindowedBolt.Duration windowDuration, BaseWindowedBolt.Duration slidingInterval, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(SlidingDurationWindow.of(windowDuration, slidingInterval), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of aggregated results based on the given window configuration which uses inmemory windowing tuple store. * * @param windowConfig window configuration like window length and slide length. * @param inputFields input fields * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream window(WindowConfig windowConfig, Fields inputFields, Aggregator aggregator, Fields functionFields) { // this store is used only for storing triggered aggregated results but not tuples as storeTuplesInStore is set // as false int he below call. InMemoryWindowsStoreFactory inMemoryWindowsStoreFactory = new InMemoryWindowsStoreFactory(); return window(windowConfig, inMemoryWindowsStoreFactory, inputFields, aggregator, functionFields, false); }

public static StormTopology buildTopology(WindowsStoreFactory windowStore, WindowConfig windowConfig) throws Exception { FixedBatchSpout spout = new FixedBatchSpout(new Fields("sentence"), 3, new Values("the cow jumped over the moon"), new Values("the man went to the store and bought some candy"), new Values("four score and seven years ago"), new Values("how many apples can you eat"), new Values("to be or not to be the person")); spout.setCycle(true); TridentTopology topology = new TridentTopology(); Stream stream = topology.newStream("spout1", spout).parallelismHint(16) .each(new Fields("sentence"), new Split(), new Fields("word")) .window(windowConfig, windowStore, new Fields("word"), new CountAsAggregator(), new Fields("count")) .peek(new Consumer() { @Override public void accept(TridentTuple input) { LOG.info("Received tuple: [{}]", input); } }); return topology.build(); }

/** * Returns stream of aggregated results based on the given window configuration. * * @param windowConfig window configuration like window length and slide length. * @param windowStoreFactory intermediary tuple store for storing tuples for windowing * @param inputFields input fields * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream window(WindowConfig windowConfig, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(windowConfig, windowStoreFactory, inputFields, aggregator, functionFields, true); }

/** * Returns a stream of tuples which are aggregated results of a sliding window with every {@code windowCount} of tuples * and slides the window after {@code slideCount}. * * @param windowCount represents tuples count of a window * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream slidingWindow(int windowCount, int slideCount, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(SlidingCountWindow.of(windowCount, slideCount), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of tuples which are aggregated results of a window that tumbles at duration of {@code windowDuration} * * @param windowDuration represents tumbling window duration configuration * @param windowStoreFactory intermediary tuple store for storing windowing tuples * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream tumblingWindow(BaseWindowedBolt.Duration windowDuration, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(TumblingDurationWindow.of(windowDuration), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of tuples which are aggregated results of a tumbling window with every {@code windowCount} of tuples. * * @param windowCount represents number of tuples in the window * @param windowStoreFactory intermediary tuple store for storing windowing tuples * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream tumblingWindow(int windowCount, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(TumblingCountWindow.of(windowCount), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of tuples which are aggregated results of a window which slides at duration of {@code slidingInterval} * and completes a window at {@code windowDuration} * * @param windowDuration represents window duration configuration * @param inputFields projected fields for aggregator * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream slidingWindow(BaseWindowedBolt.Duration windowDuration, BaseWindowedBolt.Duration slidingInterval, WindowsStoreFactory windowStoreFactory, Fields inputFields, Aggregator aggregator, Fields functionFields) { return window(SlidingDurationWindow.of(windowDuration, slidingInterval), windowStoreFactory, inputFields, aggregator, functionFields); }

/** * Returns a stream of aggregated results based on the given window configuration which uses inmemory windowing tuple store. * * @param windowConfig window configuration like window length and slide length. * @param inputFields input fields * @param aggregator aggregator to run on the window of tuples to compute the result and emit to the stream. * @param functionFields fields of values to emit with aggregation. * * @return the new stream with this operation. */ public Stream window(WindowConfig windowConfig, Fields inputFields, Aggregator aggregator, Fields functionFields) { // this store is used only for storing triggered aggregated results but not tuples as storeTuplesInStore is set // as false int he below call. InMemoryWindowsStoreFactory inMemoryWindowsStoreFactory = new InMemoryWindowsStoreFactory(); return window(windowConfig, inMemoryWindowsStoreFactory, inputFields, aggregator, functionFields, false); }