最近有几个疑问没能很好地理解清楚:
我们都知道,UDAF中的有createAccumulator这个方法,那么:
这个方法的调用时机是什么呢,会被调用几次呢?
一个accumulator的生命周期是怎么样的?
一个accumulator会被反复的序列化反序列化吗?
麻烦了解相关细节的社区的同学们帮忙解答一下~
先谢谢啦*来自志愿者整理的FLINK邮件归档
这个调用的时机是每个key的第一条数据来的时候,会创建一个accumulator。创建的次数大约是key的数量。 当然这里说的是regular groupby; 如果是window group by的话,就是每个window都会做上面的这个事情。
如果是window group by的话,那它的生命周期就是跟window是一样的。 如果是regular groupby的话,可以认为是全局的。除非有一条数据retract掉了当前的结果之后,等于被聚合的 数据是0条的时候,也会销毁。
这个问题非常好。它是否序列化跟你用的state backend有关系。 如果是rocksdb的话,是会每次更新都会存一次state。如果不是rocksdb,它就是一个内存里的数据结构,只有在 checkpoint的时候序列化。 当然这个在regular groupby的情况下,开启mini batch会减少每次都需要更新state的情况。*来自志愿者整理的FLINK邮件归档
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。