Apache flink Flink:清除过程窗口功能数据

Apache flink Flink:清除过程窗口功能数据,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我需要在弗林克有一个聚集窗口。 我不能使用聚合函数。因为getResult计算需要me状态访问。 因此,我尝试将聚合与过程结合使用: .aggregate( new AggregateFunction<Entry, Double, Double>() { ........... }; , new ProcessWindowFunction<Double,

我需要在弗林克有一个聚集窗口。 我不能使用聚合函数。因为getResult计算需要me状态访问。 因此,我尝试将聚合与过程结合使用:

   .aggregate( 
    new AggregateFunction<Entry, Double, Double>() {
                       ...........
                    };
            , new ProcessWindowFunction<Double,Result,Entry,TimeWindow>() {

                @Override
                public void process(Entry item,
                        ProcessWindowFunction<Double, Result, Entry, TimeWindow>.Context ctx,
                        Iterable<Double> aggInput, Collector<Result> output) throws Exception {


                }

    }
.aggregate(
新的AggregateFunction(){
...........
};
,新的ProcessWindowFunction(){
@凌驾
公共作废流程(条目,
ProcessWindowFunction.Context ctx,
Iterable(输入、收集器输出)引发异常{
}
}

但是,我仍然只需要aggInput的最新值,而且我不认为有理由将其保存在内存中,在我的应用程序中,它可能会有数百万的数据。因此,我想如果我可以每次清除窗口数据。

当你将
聚合函数
ProcessWindowFunction
组合时,只有聚合的最新值是kept处于窗口状态,发送到process方法的Iterable将只包含一个预聚合的条目。(A
ReduceFunction
将以同样的方式工作。)

换言之,您正在寻找的优化已经存在