Hi, There is a discussion about this before, you can take a look at it[1]. Best, Hequn
[1] http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Regarding-implementation-of-aggregate-function-using-a-ProcessFunction-td23473.html#a23531 On Thu, May 9, 2019 at 5:14 AM an0 <an0...@gmail.com> wrote: > I want to use ProcessWindowFunction.Context#globalState in my window > function. But I don't want to apply ProcessWindowFunction directly to my > WindowedStream because I don't want to buffer all the elements of each > window. Currently I'm using WindowedStream#aggregate(AggregateFunction, > ProcessWindowFunction). > > My understanding is that RichFunction.runtimeContext also give access to > those global states. That thought naturally pointed me to > RichAggregateFunction, RichReduceFunction and RichFoldFunction. However, > they all cause runtime error like this: > "AggregateFunction can not be a RichFunction. Please use > fold(AggregateFunction, WindowFunction) instead." > > So how can I use an incrementally aggregating window function and have > access to global states at the same time? >