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是不是同一个对象

回复