Hi,可以尝试下在createAccumulator中打个断点,然后一步步看为啥在getValue的时候acc变成null了。
我理解如果是“使用 ListView 时,无法正常获得 TypeInference”的话,应该报错,而不应该正确执行但是后面突然null了。 如果确定是某个地方发生了问题的话,可以在jira里贴一个issue[1]向社区反馈这个问题 ;) [1]https://issues.apache.org/jira/projects/FLINK/summary -- Best! Xuyang 在 2022-09-08 10:48:10,"Zhiwen Sun" <pens...@gmail.com> 写道: >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是不是同一个对象