flink-user-zh mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benchao Li <libenc...@gmail.com>
Subject Re: 关于Flink SQL UDAF中调用createAccumulator的调用问题
Date Tue, 21 Apr 2020 09:45:54 GMT
Hi 首维,

这是个很好的问题。

> 这个方法的调用时机是什么呢,会被调用几次呢?
这个调用的时机是每个key的第一条数据来的时候,会创建一个accumulator。创建的次数大约是key的数量。
当然这里说的是regular groupby;
如果是window group by的话,就是每个window都会做上面的这个事情。

> 一个accumulator的生命周期是怎么样的?
如果是window group by的话,那它的生命周期就是跟window是一样的。
如果是regular groupby的话,可以认为是全局的。除非有一条数据retract掉了当前的结果之后,等于被聚合的
数据是0条的时候,也会销毁。

> 一个accumulator会被反复的序列化反序列化吗?
这个问题非常好。它是否序列化跟你用的state backend有关系。
如果是rocksdb的话,是会每次更新都会存一次state。如果不是rocksdb,它就是一个内存里的数据结构,只有在
checkpoint的时候序列化。
当然这个在regular groupby的情况下,开启mini batch会减少每次都需要更新state的情况。

刘首维 <liushouwei@autohome.com.cn> 于2020年4月21日周二 下午5:37写道:

> Hi all,
>
>
>
>    最近有几个疑问没能很好地理解清楚:
>
>
>
>    我们都知道,UDAF中的有createAccumulator这个方法,那么:
>
> 这个方法的调用时机是什么呢,会被调用几次呢?
>
> 一个accumulator的生命周期是怎么样的?
>
> 一个accumulator会被反复的序列化反序列化吗?
>
>
>  麻烦了解相关细节的社区的同学们帮忙解答一下~
>
> 先谢谢啦
>


-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn
Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message