コード例 #1
0
  /**
   * Applies the given window function to each window. The window function is called for each
   * evaluation of the window for each key individually. The output of the window function is
   * interpreted as a regular non-windowed stream.
   *
   * <p>Arriving data is pre-aggregated using the given pre-aggregation reducer.
   *
   * @param preAggregator The reduce function that is used for pre-aggregation
   * @param function The window function.
   * @return The data stream that is the result of applying the window function to the window.
   */
  public <R> SingleOutputStreamOperator<R, ?> apply(
      ReduceFunction<T> preAggregator, AllWindowFunction<T, R, W> function) {
    TypeInformation<T> inType = input.getType();
    TypeInformation<R> resultType =
        TypeExtractor.getUnaryOperatorReturnType(
            function, AllWindowFunction.class, true, true, inType, null, false);

    return apply(preAggregator, function, resultType);
  }
コード例 #2
0
  /**
   * Applies a window function to the window. The window function is called for each evaluation of
   * the window for each key individually. The output of the window function is interpreted as a
   * regular non-windowed stream.
   *
   * <p>Not that this function requires that all data in the windows is buffered until the window is
   * evaluated, as the function provides no means of pre-aggregation.
   *
   * @param function The window function.
   * @return The data stream that is the result of applying the window function to the window.
   */
  public <R> SingleOutputStreamOperator<R, ?> apply(AllWindowFunction<Iterable<T>, R, W> function) {
    @SuppressWarnings("unchecked, rawtypes")
    TypeInformation<Iterable<T>> iterTypeInfo = new GenericTypeInfo<>((Class) Iterable.class);
    TypeInformation<R> resultType =
        TypeExtractor.getUnaryOperatorReturnType(
            function, AllWindowFunction.class, true, true, iterTypeInfo, null, false);

    return apply(function, resultType);
  }