hi,community,
想确认下idlestateretention的配置及生效机制,我有一个作业,设置了TTL为(10小时,10小时+5分钟)。假设我的作业是今天12:00启动,作业逻辑是统计当日10点后每个userId第一次登陆的时间:select userId, first_value(xxx) from source group by userId, date_format(eventtime, 'yyyy-MM-dd')。那么我的作业的状态清理时机是从启动时间开始10小时之后么?还是会按照状态的数据更新的时间+10小时作为清理时间? 我使用flink 1.10.1版本,初步观察到的现象是,启动时间开始大概10小时后,状态开始清理。这个感觉不符合预期?求大佬帮忙确认下。 |
hi, 我的理解也是按每个key的时间来的,没仔细看具体实现。 在 2020-08-15 17:28:43,"art" <[hidden email]> 写道: The Idle State Retention Time parameters define for how long the state of a key is retained without being updated before it is removed. 我感觉我的理解错了,这个官方描述不是state of a key, 应该是每个key都有自己的过期时间吧,那么你那个状态不是应该以user登陆后 开始 计时,不应该是作业启动吧,还望有个大佬可以解惑 在 2020年8月15日,下午3:06,sunfulin <[hidden email]> 写道: hi, 有可能这个是默认实现。我还发现另外一个问题,如果我不使用minibatch,发现作业的状态貌似不生效。导致输出了多条数据。不知道这是为何。 在 2020-08-15 13:30:24,"superainbower" <[hidden email]> 写道: 新手感觉应该是统一启动后满足TTL设置的时间就会全部清理,如果不这样,你每一个user的清理时间都不一样,那不得记录成百上千的user的更新时间 在2020年08月15日 13:15,sunfulin 写道: hi,community, 想确认下idlestateretention的配置及生效机制,我有一个作业,设置了TTL为(10小时,10小时+5分钟)。假设我的作业是今天12:00启动,作业逻辑是统计当日10点后每个userId第一次登陆的时间:select userId, first_value(xxx) from source group by userId, date_format(eventtime, 'yyyy-MM-dd')。那么我的作业的状态清理时机是从启动时间开始10小时之后么?还是会按照状态的数据更新的时间+10小时作为清理时间? 我使用flink 1.10.1版本,初步观察到的现象是,启动时间开始大概10小时后,状态开始清理。这个感觉不符合预期?求大佬帮忙确认下。 |
是按照每个key来清理的。清理时机是跟它最后的更新时间有关系,
也就是在最后一次更新加上state retention时间这么长的时间后会清理。 最开始实现状态清理的时候,用的都是timer来清理,也就是每个key下都有自己的timer。 现在是比较推荐使用state本身的TTL来做状态清理,并且用的是UpdateType.OnCreateAndWrite。 不过现在还没有完全把每个算子和function都重构成这样子,所以还有些老的算子还是用的 timer来实现的。 sunfulin <[hidden email]> 于2020年8月15日周六 下午6:12写道: > > > > hi, > 我的理解也是按每个key的时间来的,没仔细看具体实现。 > > > > > > > > > > > > > > 在 2020-08-15 17:28:43,"art" <[hidden email]> 写道: > > The Idle State Retention Time parameters define for how long the state of > a key is retained without being updated before it is removed. > 我感觉我的理解错了,这个官方描述不是state of a key, 应该是每个key都有自己的过期时间吧,那么你那个状态不是应该以user登陆后 开始 > 计时,不应该是作业启动吧,还望有个大佬可以解惑 > > > > 在 2020年8月15日,下午3:06,sunfulin <[hidden email]> 写道: > > > hi, > 有可能这个是默认实现。我还发现另外一个问题,如果我不使用minibatch,发现作业的状态貌似不生效。导致输出了多条数据。不知道这是为何。 > > > > > > > > > > > > 在 2020-08-15 13:30:24,"superainbower" <[hidden email]> 写道: > > 新手感觉应该是统一启动后满足TTL设置的时间就会全部清理,如果不这样,你每一个user的清理时间都不一样,那不得记录成百上千的user的更新时间 > > 在2020年08月15日 13:15,sunfulin 写道: > hi,community, > 想确认下idlestateretention的配置及生效机制,我有一个作业,设置了TTL为(10小时,10小时+5分钟)。假设我的作业是今天12:00启动,作业逻辑是统计当日10点后每个userId第一次登陆的时间:select > userId, first_value(xxx) from source group by userId, > date_format(eventtime, > 'yyyy-MM-dd')。那么我的作业的状态清理时机是从启动时间开始10小时之后么?还是会按照状态的数据更新的时间+10小时作为清理时间? > 我使用flink 1.10.1版本,初步观察到的现象是,启动时间开始大概10小时后,状态开始清理。这个感觉不符合预期?求大佬帮忙确认下。 > > > > > > > -- Best, Benchao Li |
@Li Benchao
(1) 如果不是每个key一个timer,但超时仍然应该是key级别的吧,只是说清理机制上不是每个key设置一个timer去清理。 比如有个全局的其他机制定期扫描清理,但超时时间应该还是key级别。 (2) 关于超时时间,对于一个key,他的value每次更新超时都会重新计算,还是永远按照这个key创建时时间开始计算呢。 Benchao Li <[hidden email]> 于2020年8月15日周六 下午7:27写道: > 是按照每个key来清理的。清理时机是跟它最后的更新时间有关系, > 也就是在最后一次更新加上state retention时间这么长的时间后会清理。 > > 最开始实现状态清理的时候,用的都是timer来清理,也就是每个key下都有自己的timer。 > 现在是比较推荐使用state本身的TTL来做状态清理,并且用的是UpdateType.OnCreateAndWrite。 > 不过现在还没有完全把每个算子和function都重构成这样子,所以还有些老的算子还是用的 > timer来实现的。 > > sunfulin <[hidden email]> 于2020年8月15日周六 下午6:12写道: > > > > > > > > > hi, > > 我的理解也是按每个key的时间来的,没仔细看具体实现。 > > > > > > > > > > > > > > > > > > > > > > > > > > > > 在 2020-08-15 17:28:43,"art" <[hidden email]> 写道: > > > > The Idle State Retention Time parameters define for how long the state of > > a key is retained without being updated before it is removed. > > 我感觉我的理解错了,这个官方描述不是state of a key, 应该是每个key都有自己的过期时间吧,那么你那个状态不是应该以user登陆后 > 开始 > > 计时,不应该是作业启动吧,还望有个大佬可以解惑 > > > > > > > > 在 2020年8月15日,下午3:06,sunfulin <[hidden email]> 写道: > > > > > > hi, > > 有可能这个是默认实现。我还发现另外一个问题,如果我不使用minibatch,发现作业的状态貌似不生效。导致输出了多条数据。不知道这是为何。 > > > > > > > > > > > > > > > > > > > > > > > > 在 2020-08-15 13:30:24,"superainbower" <[hidden email]> 写道: > > > > 新手感觉应该是统一启动后满足TTL设置的时间就会全部清理,如果不这样,你每一个user的清理时间都不一样,那不得记录成百上千的user的更新时间 > > > > 在2020年08月15日 13:15,sunfulin 写道: > > hi,community, > > > 想确认下idlestateretention的配置及生效机制,我有一个作业,设置了TTL为(10小时,10小时+5分钟)。假设我的作业是今天12:00启动,作业逻辑是统计当日10点后每个userId第一次登陆的时间:select > > userId, first_value(xxx) from source group by userId, > > date_format(eventtime, > > 'yyyy-MM-dd')。那么我的作业的状态清理时机是从启动时间开始10小时之后么?还是会按照状态的数据更新的时间+10小时作为清理时间? > > 我使用flink 1.10.1版本,初步观察到的现象是,启动时间开始大概10小时后,状态开始清理。这个感觉不符合预期?求大佬帮忙确认下。 > > > > > > > > > > > > > > > > -- > > Best, > Benchao Li > |
1) 这个应该还是按照每个key来单独清理的
2)是按照最后的更新时间,也就是每次更新的时候超时时间重新开始计算 赵一旦 <[hidden email]> 于2020年8月17日周一 上午11:51写道: > @Li Benchao > (1) > 如果不是每个key一个timer,但超时仍然应该是key级别的吧,只是说清理机制上不是每个key设置一个timer去清理。 > 比如有个全局的其他机制定期扫描清理,但超时时间应该还是key级别。 > > (2) > 关于超时时间,对于一个key,他的value每次更新超时都会重新计算,还是永远按照这个key创建时时间开始计算呢。 > > Benchao Li <[hidden email]> 于2020年8月15日周六 下午7:27写道: > > > 是按照每个key来清理的。清理时机是跟它最后的更新时间有关系, > > 也就是在最后一次更新加上state retention时间这么长的时间后会清理。 > > > > 最开始实现状态清理的时候,用的都是timer来清理,也就是每个key下都有自己的timer。 > > 现在是比较推荐使用state本身的TTL来做状态清理,并且用的是UpdateType.OnCreateAndWrite。 > > 不过现在还没有完全把每个算子和function都重构成这样子,所以还有些老的算子还是用的 > > timer来实现的。 > > > > sunfulin <[hidden email]> 于2020年8月15日周六 下午6:12写道: > > > > > > > > > > > > > > hi, > > > 我的理解也是按每个key的时间来的,没仔细看具体实现。 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 在 2020-08-15 17:28:43,"art" <[hidden email]> 写道: > > > > > > The Idle State Retention Time parameters define for how long the state > of > > > a key is retained without being updated before it is removed. > > > 我感觉我的理解错了,这个官方描述不是state of a key, > 应该是每个key都有自己的过期时间吧,那么你那个状态不是应该以user登陆后 > > 开始 > > > 计时,不应该是作业启动吧,还望有个大佬可以解惑 > > > > > > > > > > > > 在 2020年8月15日,下午3:06,sunfulin <[hidden email]> 写道: > > > > > > > > > hi, > > > 有可能这个是默认实现。我还发现另外一个问题,如果我不使用minibatch,发现作业的状态貌似不生效。导致输出了多条数据。不知道这是为何。 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > 在 2020-08-15 13:30:24,"superainbower" <[hidden email]> 写道: > > > > > > > 新手感觉应该是统一启动后满足TTL设置的时间就会全部清理,如果不这样,你每一个user的清理时间都不一样,那不得记录成百上千的user的更新时间 > > > > > > 在2020年08月15日 13:15,sunfulin 写道: > > > hi,community, > > > > > > 想确认下idlestateretention的配置及生效机制,我有一个作业,设置了TTL为(10小时,10小时+5分钟)。假设我的作业是今天12:00启动,作业逻辑是统计当日10点后每个userId第一次登陆的时间:select > > > userId, first_value(xxx) from source group by userId, > > > date_format(eventtime, > > > 'yyyy-MM-dd')。那么我的作业的状态清理时机是从启动时间开始10小时之后么?还是会按照状态的数据更新的时间+10小时作为清理时间? > > > 我使用flink 1.10.1版本,初步观察到的现象是,启动时间开始大概10小时后,状态开始清理。这个感觉不符合预期?求大佬帮忙确认下。 > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > Best, > > Benchao Li > > > -- Best, Benchao Li |
Free forum by Nabble | Edit this page |