hi,

感谢你的回复。

报错是在 getValue 的时候。

        at GroupAggsHandler$439.getValue(Unknown Source)
        at 
org.apache.flink.table.runtime.operators.aggregate.GroupAggFunction.processElement(GroupAggFunction.java:146)



我的疑问是使用一个 Class 包装下 ListView 就能正常工作,而直接使用 ListView 是会报错。

比如使用  AggregateFunction<String,  MyAccumulator>  就正常,而使用
AggregateFunction<String,
ListView<String>>  就会 NPE。


我怀疑使用 ListView 时,无法正常获得 TypeInference。


Zhiwen Sun



On Wed, Sep 7, 2022 at 11:46 PM Xuyang <xyzhong...@163.com> wrote:

> Hi,
> 理论上来说,在你的case中,会先通过createAccumulator方法创建一个ListView作为acc,然后,每一个输入的row都会触发accumulate方法,将数据更新到刚才的acc中,最终通过getValue方法拿到当前acc的值。
>
>
>
>
> 实际测试中的NPE发生在更新acc的时候还是getValue的时候呢?可以通过在这三个阶段设一下断点,分别看一下当前持有的acc是不是同一个对象
>
>
>
>
> --
>
>     Best!
>     Xuyang
>
>
>
>
>
> 在 2022-09-07 16:23:25,"Zhiwen Sun" <pens...@gmail.com> 写道:
>
> Hi,
> 理论上来说,在你的case中,会先通过createAccumulator方法创建一个ListView作为acc,然后,每一个输入的row都会触发accumulate方法,将数据更新到刚才的acc中,最终通过getValue方法拿到当前acc的值。<br/><br/>实际测试中的NPE发生在更新acc的时候还是getValue的时候呢?可以通过在这三个阶段设一下断点,分别看一下当前持有的acc是不是同一个对象

回复