You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user-zh@flink.apache.org by "marble.zhong@coinflex.com.INVALID" <ma...@coinflex.com.INVALID> on 2021/01/15 09:13:26 UTC

flink滑动窗口输出结果的问题

大家好, 我现在的场景需求是,窗口size是1个小时,每分钟触发统计一次结果。比如现在是10点钟,则统计9点到10点的结果。
下一分钟则在10:01分时触发统计9:01到10:01的结果。

如果用Sliding window, 比如.timeWindow(Time.hours(1L), Time.minutes(1)),
则会输出60/1=60个结果集,这不是我想要的结果,我只想要当前时间往前一个小时的结果。

除了在window function api做逻辑过虑外,还有什么方法可以实现这种场景? 

滚动窗口的话不适合,它每次是输出整点的,比如从9点到10点,然后就跳到10点到11点,也不符合我的业务要求。



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: flink滑动窗口输出结果的问题

Posted by 赵一旦 <hi...@gmail.com>.
我看你还写到 “每分钟触发统计一次结果”,你是不是做了自定义trigger啥的,导致逻辑不对了。

默认情况就可以实现你要的效果,不要自定义trigger哈这里。

赵一旦 <hi...@gmail.com> 于2021年1月18日周一 下午3:52写道:

> 补充下,是针对每个key,每1min输出一个结果。采用1h窗口,1min滑动窗口。
>
>
>
> 赵一旦 <hi...@gmail.com> 于2021年1月18日周一 下午3:51写道:
>
>> 你貌似没懂我的意思。我的意思是你的需求和sliding window的效果应该就是一样的。
>> 不是很清楚你表达的最早什么的是什么含义。
>>
>> 基于event time做sliding window,只要你没设置其他东西,就应该是1min输出一个结果而已哈。
>>
>> eriendeng <er...@tencent.com> 于2021年1月18日周一 上午11:42写道:
>>
>>> 只要sliding出来才满足你每分钟执行的滑动要求吧?至于你只要最早/新的某一条,你可以从window groupby得出的流再次group
>>> by然后再用window时间筛选你要的数据。
>>>
>>>
>>>
>>> --
>>> Sent from: http://apache-flink.147419.n8.nabble.com/
>>
>>

Re: flink滑动窗口输出结果的问题

Posted by 赵一旦 <hi...@gmail.com>.
补充下,是针对每个key,每1min输出一个结果。采用1h窗口,1min滑动窗口。



赵一旦 <hi...@gmail.com> 于2021年1月18日周一 下午3:51写道:

> 你貌似没懂我的意思。我的意思是你的需求和sliding window的效果应该就是一样的。
> 不是很清楚你表达的最早什么的是什么含义。
>
> 基于event time做sliding window,只要你没设置其他东西,就应该是1min输出一个结果而已哈。
>
> eriendeng <er...@tencent.com> 于2021年1月18日周一 上午11:42写道:
>
>> 只要sliding出来才满足你每分钟执行的滑动要求吧?至于你只要最早/新的某一条,你可以从window groupby得出的流再次group
>> by然后再用window时间筛选你要的数据。
>>
>>
>>
>> --
>> Sent from: http://apache-flink.147419.n8.nabble.com/
>
>

Re: flink滑动窗口输出结果的问题

Posted by 赵一旦 <hi...@gmail.com>.
你貌似没懂我的意思。我的意思是你的需求和sliding window的效果应该就是一样的。
不是很清楚你表达的最早什么的是什么含义。

基于event time做sliding window,只要你没设置其他东西,就应该是1min输出一个结果而已哈。

eriendeng <er...@tencent.com> 于2021年1月18日周一 上午11:42写道:

> 只要sliding出来才满足你每分钟执行的滑动要求吧?至于你只要最早/新的某一条,你可以从window groupby得出的流再次group
> by然后再用window时间筛选你要的数据。
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/

Re: flink滑动窗口输出结果的问题

Posted by eriendeng <er...@tencent.com>.
只要sliding出来才满足你每分钟执行的滑动要求吧?至于你只要最早/新的某一条,你可以从window groupby得出的流再次group
by然后再用window时间筛选你要的数据。



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: flink滑动窗口输出结果的问题

Posted by "marble.zhong@coinflex.com.INVALID" <ma...@coinflex.com.INVALID>.
 是的, 现在的问题是sliding会产生多个结果,而我只要输出最早的那个窗口的结果数据。



--
Sent from: http://apache-flink.147419.n8.nabble.com/

Re: flink滑动窗口输出结果的问题

Posted by 赵一旦 <hi...@gmail.com>.
从你的描述来看,你说的貌似就是sliding window呀。
9-10,9.01-10.01...

marble.zhong@coinflex.com.INVALID <ma...@coinflex.com.invalid>
于2021年1月15日周五 下午5:45写道:

> 大家好, 我现在的场景需求是,窗口size是1个小时,每分钟触发统计一次结果。比如现在是10点钟,则统计9点到10点的结果。
> 下一分钟则在10:01分时触发统计9:01到10:01的结果。
>
> 如果用Sliding window, 比如.timeWindow(Time.hours(1L), Time.minutes(1)),
> 则会输出60/1=60个结果集,这不是我想要的结果,我只想要当前时间往前一个小时的结果。
>
> 除了在window function api做逻辑过虑外,还有什么方法可以实现这种场景?
>
> 滚动窗口的话不适合,它每次是输出整点的,比如从9点到10点,然后就跳到10点到11点,也不符合我的业务要求。
>
>
>
> --
> Sent from: http://apache-flink.147419.n8.nabble.com/