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 <[email protected]> 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" <[email protected]> 写道:
>
> Hi,
> 理论上来说,在你的case中,会先通过createAccumulator方法创建一个ListView作为acc,然后,每一个输入的row都会触发accumulate方法,将数据更新到刚才的acc中,最终通过getValue方法拿到当前acc的值。<br/><br/>实际测试中的NPE发生在更新acc的时候还是getValue的时候呢?可以通过在这三个阶段设一下断点,分别看一下当前持有的acc是不是同一个对象