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 lec ssmi <sh...@gmail.com> on 2020/04/28 01:44:55 UTC

关于撤回流的Watermark问题

Hi:
   在tableAPI中,带有时间属性的聚合,比如window聚合,对于retract消息的事件延迟怎么处理呢?
   举个例子,
   假设上游使用了last_value 操作加over window操作,一直生成一条数据的最新值,然后和另外一个流做join , 再进行 time
window聚合操作。现在已经十点,最大延迟为一个小时,这个时候event-time为9点的消息,已经超过了最大延迟,但是在join中仍然生成一条join后的记录(因为join不过滤超时的数据),这条记录会对原先join好的一条记录进行撤回。那这个撤回消息,在到达time
window的时候,因为超过了最大延迟,DELELE记录和INSERT记录都不会被处理吗?
 谢谢。

Re: 关于撤回流的Watermark问题

Posted by Benchao Li <li...@gmail.com>.
Hi lec,

不好意思,这个行为是之前的行为。这个最近已经在FLINK-16887中顺手把这个行为修改了。

我之前也建了一个issue:https://issues.apache.org/jira/browse/FLINK-16844 想修改这个行为的,
不过还没有得到committer的认同。这个issue那我现在可以关掉了。

那么我们按照当前最新的代码来看的话,你可以认为Window Operator是支持retract消息的。
那么对于retract消息的处理,其实跟普通的append消息是相同的,过期的retract消息同样会被直接丢弃。



lec ssmi <sh...@gmail.com> 于2020年4月28日周二 上午11:28写道:

> 但是我在DataStreamGroupWindowAggregateBase这个类里面,发现以下两个方法都是true啊。
> override def needsUpdatesAsRetraction = true
> override def consumesRetractions = true
>
> Benchao Li <li...@gmail.com> 于2020年4月28日周二 上午10:19写道:
>
> > Hi lec,
> >
> > Window Operator目前是不支持retract的输入的。
> >
> > lec ssmi <sh...@gmail.com> 于2020年4月28日周二 上午9:45写道:
> >
> > > Hi:
> > >    在tableAPI中,带有时间属性的聚合,比如window聚合,对于retract消息的事件延迟怎么处理呢?
> > >    举个例子,
> > >    假设上游使用了last_value 操作加over window操作,一直生成一条数据的最新值,然后和另外一个流做join , 再进行
> > time
> > >
> > >
> >
> window聚合操作。现在已经十点,最大延迟为一个小时,这个时候event-time为9点的消息,已经超过了最大延迟,但是在join中仍然生成一条join后的记录(因为join不过滤超时的数据),这条记录会对原先join好的一条记录进行撤回。那这个撤回消息,在到达time
> > > window的时候,因为超过了最大延迟,DELELE记录和INSERT记录都不会被处理吗?
> > >  谢谢。
> > >
> >
> >
> > --
> >
> > Benchao Li
> > School of Electronics Engineering and Computer Science, Peking University
> > Tel:+86-15650713730
> > Email: libenchao@gmail.com; libenchao@pku.edu.cn
> >
>


-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn

Re: 关于撤回流的Watermark问题

Posted by lec ssmi <sh...@gmail.com>.
但是我在DataStreamGroupWindowAggregateBase这个类里面,发现以下两个方法都是true啊。
override def needsUpdatesAsRetraction = true
override def consumesRetractions = true

Benchao Li <li...@gmail.com> 于2020年4月28日周二 上午10:19写道:

> Hi lec,
>
> Window Operator目前是不支持retract的输入的。
>
> lec ssmi <sh...@gmail.com> 于2020年4月28日周二 上午9:45写道:
>
> > Hi:
> >    在tableAPI中,带有时间属性的聚合,比如window聚合,对于retract消息的事件延迟怎么处理呢?
> >    举个例子,
> >    假设上游使用了last_value 操作加over window操作,一直生成一条数据的最新值,然后和另外一个流做join , 再进行
> time
> >
> >
> window聚合操作。现在已经十点,最大延迟为一个小时,这个时候event-time为9点的消息,已经超过了最大延迟,但是在join中仍然生成一条join后的记录(因为join不过滤超时的数据),这条记录会对原先join好的一条记录进行撤回。那这个撤回消息,在到达time
> > window的时候,因为超过了最大延迟,DELELE记录和INSERT记录都不会被处理吗?
> >  谢谢。
> >
>
>
> --
>
> Benchao Li
> School of Electronics Engineering and Computer Science, Peking University
> Tel:+86-15650713730
> Email: libenchao@gmail.com; libenchao@pku.edu.cn
>

Re: 关于撤回流的Watermark问题

Posted by Benchao Li <li...@gmail.com>.
Hi lec,

Window Operator目前是不支持retract的输入的。

lec ssmi <sh...@gmail.com> 于2020年4月28日周二 上午9:45写道:

> Hi:
>    在tableAPI中,带有时间属性的聚合,比如window聚合,对于retract消息的事件延迟怎么处理呢?
>    举个例子,
>    假设上游使用了last_value 操作加over window操作,一直生成一条数据的最新值,然后和另外一个流做join , 再进行 time
>
> window聚合操作。现在已经十点,最大延迟为一个小时,这个时候event-time为9点的消息,已经超过了最大延迟,但是在join中仍然生成一条join后的记录(因为join不过滤超时的数据),这条记录会对原先join好的一条记录进行撤回。那这个撤回消息,在到达time
> window的时候,因为超过了最大延迟,DELELE记录和INSERT记录都不会被处理吗?
>  谢谢。
>


-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenchao@gmail.com; libenchao@pku.edu.cn