/** * Base interface for functions that are evaluated over keyed (grouped) windows. * * @param <IN> The type of the input value. * @param <OUT> The type of the output value. * @param <KEY> The type of the key. * @param <W> The type of {@code Window} that this window function can be applied on. */ @Public publicinterfaceWindowFunction<IN, OUT, KEY, W extendsWindow> extendsFunction, Serializable {
/** * Evaluates the window and outputs none or several elements. * * @param key The key for which this window is evaluated. * @param window The window that is being evaluated. * @param input The elements in the window being evaluated. * @param out A collector for emitting elements. * * @throws Exception The function may throw exceptions to fail the program and trigger recovery. */ voidapply(KEY key, W window, Iterable<IN> input, Collector<OUT> out)throws Exception; }