如何在Flink SQL中使用周期性水印?

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

如何在Flink SQL中使用周期性水印?

noake
Dear All:


大佬们, 请教下如何在Flink SQL中使用周期性的水印。
我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。
Reply | Threaded
Open this post in threaded view
|

Re: 如何在Flink SQL中使用周期性水印?

Jark
Administrator
Hi,

这个问题我理解其实和周期性水印没有关系,是属于 idle source
的问题,你可以尝试下加上配置 table.exec.source.idle-timeout = 10s 能不能解决你的问题。[1]

Best,
Jark

[1]:
https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout

On Tue, 7 Jul 2020 at 17:35, noake <[hidden email]> wrote:

> Dear All:
>
>
> 大佬们, 请教下如何在Flink SQL中使用周期性的水印。
> 我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。
Reply | Threaded
Open this post in threaded view
|

回复: 如何在Flink SQL中使用周期性水印?

Cayden chen
hi Jark Wu.
我的理解是table.exec.source.idle-timeout只能解决watermark对齐的时候去忽略某个没有watermark的并行度。但是在每个并行度都没有watermark的时候,还是无法更新watermark。
我觉得题主的意思应该是,在kafka的所有分区都没有数据的时候,最后一个窗口无法触发(因为没有watermark大于最后那个窗口结束时间了)。
有没有可以设置在eventTime情况下,周期性生成当前时间的一个waterMark(和数据无关),因为可能没有新数据到来了。




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Jark Wu"<[hidden email]&gt;;
发送时间:&nbsp;2020年7月7日(星期二) 晚上6:09
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: 如何在Flink SQL中使用周期性水印?



Hi,

这个问题我理解其实和周期性水印没有关系,是属于 idle source
的问题,你可以尝试下加上配置 table.exec.source.idle-timeout = 10s 能不能解决你的问题。[1]

Best,
Jark

[1]:
https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout

On Tue, 7 Jul 2020 at 17:35, noake <[hidden email]&gt; wrote:

&gt; Dear All:
&gt;
&gt;
&gt; 大佬们, 请教下如何在Flink SQL中使用周期性的水印。
&gt; 我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。
Reply | Threaded
Open this post in threaded view
|

Re: 如何在Flink SQL中使用周期性水印?

Jark
Administrator
如果所有 partition 都没有数据,还希望 watermark 往前走,那 idle source 确实解决不了这个问题。
目前确实没有太好的解决办法。

Best,
Jark

On Wed, 8 Jul 2020 at 11:08, 1193216154 <[hidden email]> wrote:

> hi Jark Wu.
>
> 我的理解是table.exec.source.idle-timeout只能解决watermark对齐的时候去忽略某个没有watermark的并行度。但是在每个并行度都没有watermark的时候,还是无法更新watermark。
> 我觉得题主的意思应该是,在kafka的所有分区都没有数据的时候,最后一个窗口无法触发(因为没有watermark大于最后那个窗口结束时间了)。
> 有没有可以设置在eventTime情况下,周期性生成当前时间的一个waterMark(和数据无关),因为可能没有新数据到来了。
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Jark Wu"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年7月7日(星期二) 晚上6:09
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: 如何在Flink SQL中使用周期性水印?
>
>
>
> Hi,
>
> 这个问题我理解其实和周期性水印没有关系,是属于 idle source
> 的问题,你可以尝试下加上配置 table.exec.source.idle-timeout = 10s 能不能解决你的问题。[1]
>
> Best,
> Jark
>
> [1]:
>
> https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout
>
> On Tue, 7 Jul 2020 at 17:35, noake <[hidden email]&gt; wrote:
>
> &gt; Dear All:
> &gt;
> &gt;
> &gt; 大佬们, 请教下如何在Flink SQL中使用周期性的水印。
> &gt; 我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。
Reply | Threaded
Open this post in threaded view
|

回复: 如何在Flink SQL中使用周期性水印?

Cayden chen
&nbsp; &nbsp;Jark,flink有没有必要去支持这个特性?我感觉还是有一些应用场景




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Jark Wu"<[hidden email]&gt;;
发送时间:&nbsp;2020年7月8日(星期三) 中午11:48
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: 如何在Flink SQL中使用周期性水印?



如果所有 partition 都没有数据,还希望 watermark 往前走,那 idle source 确实解决不了这个问题。
目前确实没有太好的解决办法。

Best,
Jark

On Wed, 8 Jul 2020 at 11:08, 1193216154 <[hidden email]&gt; wrote:

&gt; hi Jark Wu.
&gt;
&gt; 我的理解是table.exec.source.idle-timeout只能解决watermark对齐的时候去忽略某个没有watermark的并行度。但是在每个并行度都没有watermark的时候,还是无法更新watermark。
&gt; 我觉得题主的意思应该是,在kafka的所有分区都没有数据的时候,最后一个窗口无法触发(因为没有watermark大于最后那个窗口结束时间了)。
&gt; 有没有可以设置在eventTime情况下,周期性生成当前时间的一个waterMark(和数据无关),因为可能没有新数据到来了。
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"Jark Wu"<[hidden email]&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年7月7日(星期二) 晚上6:09
&gt; 收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: 如何在Flink SQL中使用周期性水印?
&gt;
&gt;
&gt;
&gt; Hi,
&gt;
&gt; 这个问题我理解其实和周期性水印没有关系,是属于 idle source
&gt; 的问题,你可以尝试下加上配置 table.exec.source.idle-timeout = 10s 能不能解决你的问题。[1]
&gt;
&gt; Best,
&gt; Jark
&gt;
&gt; [1]:
&gt;
&gt; https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout
&gt;
&gt; On Tue, 7 Jul 2020 at 17:35, noake <[hidden email]&amp;gt; wrote:
&gt;
&gt; &amp;gt; Dear All:
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; 大佬们, 请教下如何在Flink SQL中使用周期性的水印。
&gt; &amp;gt; 我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。
Reply | Threaded
Open this post in threaded view
|

Re: 如何在Flink SQL中使用周期性水印?

Jark
Administrator
嗯, 可以在 JIRA 中开个 issue 描述下你的需求~

On Wed, 8 Jul 2020 at 12:01, 1193216154 <[hidden email]> wrote:

> &nbsp; &nbsp;Jark,flink有没有必要去支持这个特性?我感觉还是有一些应用场景
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Jark Wu"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年7月8日(星期三) 中午11:48
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: 如何在Flink SQL中使用周期性水印?
>
>
>
> 如果所有 partition 都没有数据,还希望 watermark 往前走,那 idle source 确实解决不了这个问题。
> 目前确实没有太好的解决办法。
>
> Best,
> Jark
>
> On Wed, 8 Jul 2020 at 11:08, 1193216154 <[hidden email]&gt; wrote:
>
> &gt; hi Jark Wu.
> &gt;
> &gt;
> 我的理解是table.exec.source.idle-timeout只能解决watermark对齐的时候去忽略某个没有watermark的并行度。但是在每个并行度都没有watermark的时候,还是无法更新watermark。
> &gt;
> 我觉得题主的意思应该是,在kafka的所有分区都没有数据的时候,最后一个窗口无法触发(因为没有watermark大于最后那个窗口结束时间了)。
> &gt; 有没有可以设置在eventTime情况下,周期性生成当前时间的一个waterMark(和数据无关),因为可能没有新数据到来了。
> &gt;
> &gt;
> &gt;
> &gt;
> &gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
> &gt; 发件人:&amp;nbsp;"Jark Wu"<[hidden email]&amp;gt;;
> &gt; 发送时间:&amp;nbsp;2020年7月7日(星期二) 晚上6:09
> &gt; 收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
> &gt;
> &gt; 主题:&amp;nbsp;Re: 如何在Flink SQL中使用周期性水印?
> &gt;
> &gt;
> &gt;
> &gt; Hi,
> &gt;
> &gt; 这个问题我理解其实和周期性水印没有关系,是属于 idle source
> &gt; 的问题,你可以尝试下加上配置 table.exec.source.idle-timeout = 10s 能不能解决你的问题。[1]
> &gt;
> &gt; Best,
> &gt; Jark
> &gt;
> &gt; [1]:
> &gt;
> &gt;
> https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout
> &gt
> <https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout&gt>
> ;
> &gt; On Tue, 7 Jul 2020 at 17:35, noake <[hidden email]&amp;gt; wrote:
> &gt;
> &gt; &amp;gt; Dear All:
> &gt; &amp;gt;
> &gt; &amp;gt;
> &gt; &amp;gt; 大佬们, 请教下如何在Flink SQL中使用周期性的水印。
> &gt; &amp;gt; 我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。
Reply | Threaded
Open this post in threaded view
|

回复: 如何在Flink SQL中使用周期性水印?

Cayden chen
欢迎加入讨论&nbsp; https://issues.apache.org/jira/browse/FLINK-18523


------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Jark Wu"<[hidden email]&gt;;
发送时间:&nbsp;2020年7月8日(星期三) 中午1:26
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

主题:&nbsp;Re: 如何在Flink SQL中使用周期性水印?



嗯, 可以在 JIRA 中开个 issue 描述下你的需求~

On Wed, 8 Jul 2020 at 12:01, 1193216154 <[hidden email]&gt; wrote:

&gt; &amp;nbsp; &amp;nbsp;Jark,flink有没有必要去支持这个特性?我感觉还是有一些应用场景
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"Jark Wu"<[hidden email]&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年7月8日(星期三) 中午11:48
&gt; 收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: 如何在Flink SQL中使用周期性水印?
&gt;
&gt;
&gt;
&gt; 如果所有 partition 都没有数据,还希望 watermark 往前走,那 idle source 确实解决不了这个问题。
&gt; 目前确实没有太好的解决办法。
&gt;
&gt; Best,
&gt; Jark
&gt;
&gt; On Wed, 8 Jul 2020 at 11:08, 1193216154 <[hidden email]&amp;gt; wrote:
&gt;
&gt; &amp;gt; hi Jark Wu.
&gt; &amp;gt;
&gt; &amp;gt;
&gt; 我的理解是table.exec.source.idle-timeout只能解决watermark对齐的时候去忽略某个没有watermark的并行度。但是在每个并行度都没有watermark的时候,还是无法更新watermark。
&gt; &amp;gt;
&gt; 我觉得题主的意思应该是,在kafka的所有分区都没有数据的时候,最后一个窗口无法触发(因为没有watermark大于最后那个窗口结束时间了)。
&gt; &amp;gt; 有没有可以设置在eventTime情况下,周期性生成当前时间的一个waterMark(和数据无关),因为可能没有新数据到来了。
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; ------------------&amp;amp;nbsp;原始邮件&amp;amp;nbsp;------------------
&gt; &amp;gt; 发件人:&amp;amp;nbsp;"Jark Wu"<[hidden email]&amp;amp;gt;;
&gt; &amp;gt; 发送时间:&amp;amp;nbsp;2020年7月7日(星期二) 晚上6:09
&gt; &amp;gt; 收件人:&amp;amp;nbsp;"user-zh"<[hidden email]&amp;amp;gt;;
&gt; &amp;gt;
&gt; &amp;gt; 主题:&amp;amp;nbsp;Re: 如何在Flink SQL中使用周期性水印?
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;gt; Hi,
&gt; &amp;gt;
&gt; &amp;gt; 这个问题我理解其实和周期性水印没有关系,是属于 idle source
&gt; &amp;gt; 的问题,你可以尝试下加上配置 table.exec.source.idle-timeout = 10s 能不能解决你的问题。[1]
&gt; &amp;gt;
&gt; &amp;gt; Best,
&gt; &amp;gt; Jark
&gt; &amp;gt;
&gt; &amp;gt; [1]:
&gt; &amp;gt;
&gt; &amp;gt;
&gt; https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout
&gt; &amp;gt
&gt; <https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout&amp;gt&gt;
&gt; ;
&gt; &amp;gt; On Tue, 7 Jul 2020 at 17:35, noake <[hidden email]&amp;amp;gt; wrote:
&gt; &amp;gt;
&gt; &amp;gt; &amp;amp;gt; Dear All:
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt;
&gt; &amp;gt; &amp;amp;gt; 大佬们, 请教下如何在Flink SQL中使用周期性的水印。
&gt; &amp;gt; &amp;amp;gt; 我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。
Reply | Threaded
Open this post in threaded view
|

Re: 如何在Flink SQL中使用周期性水印?

noake
In reply to this post by Jark
非常感谢大家的回复。


我们的业务场景已经解决了。
目前的做法是在TableSource中配置水印策略, 在WatermarkGenerator中判断是否需要发射新的水印




原始邮件
发件人:Jark [hidden email]
收件人:[hidden email]
发送时间:2020年7月8日(周三) 13:26
主题:Re: 如何在Flink SQL中使用周期性水印?


嗯, 可以在 JIRA 中开个 issue 描述下你的需求~ On Wed, 8 Jul 2020 at 12:01, 1193216154 [hidden email] wrote:  nbsp; nbsp;Jark,flink有没有必要去支持这个特性?我感觉还是有一些应用场景      ------------------nbsp;原始邮件nbsp;------------------  发件人:nbsp;"Jark Wu"[hidden email];;  发送时间:nbsp;2020年7月8日(星期三) 中午11:48  收件人:nbsp;"user-zh"[hidden email];;   主题:nbsp;Re: 如何在Flink SQL中使用周期性水印?     如果所有 partition 都没有数据,还希望 watermark 往前走,那 idle source 确实解决不了这个问题。  目前确实没有太好的解决办法。   Best,  Jark   On Wed, 8 Jul 2020 at 11:08, 1193216154 [hidden email]; wrote:   gt; hi Jark Wu.  gt;  gt;  我的理解是table.exec.source.idle-timeout只能解决watermark对齐的时候去忽略某个没有watermark的并行度。但是在每个并行度都没有watermark的时候,还是无法更新watermark。  gt;  我觉得题主的意思应该是,在kafka的所有分区都没有数据的时候,最后一个窗口无法触发(因为没有watermark大于最后那个窗口结束时间了)。  gt; 有没有可以设置在eventTime情况下,周期性生成当前时间的一个waterMark(和数据无关),因为可能没有新数据到来了。  gt;  gt;  gt;  gt;  gt; ------------------amp;nbsp;原始邮件amp;nbsp;------------------  gt; 发件人:amp;nbsp;"Jark Wu"[hidden email];gt;;  gt; 发送时间:amp;nbsp;2020年7月7日(星期二) 晚上6:09  gt; 收件人:amp;nbsp;"user-zh"[hidden email];gt;;  gt;  gt; 主题:amp;nbsp;Re: 如何在Flink SQL中使用周期性水印?  gt;  gt;  gt;  gt; Hi,  gt;  gt; 这个问题我理解其实和周期性水印没有关系,是属于 idle source  gt; 的问题,你可以尝试下加上配置 table.exec.source.idle-timeout = 10s 能不能解决你的问题。[1]  gt;  gt; Best,  gt; Jark  gt;  gt; [1]:  gt;  gt;  https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeout  gt  ">https://ci.apache.org/projects/flink/flink-docs-master/dev/table/config.html#table-exec-source-idle-timeoutgt  ;  gt; On Tue, 7 Jul 2020 at 17:35, noake [hidden email];gt; wrote:  gt;  gt; amp;gt; Dear All:  gt; amp;gt;  gt; amp;gt;  gt; amp;gt; 大佬们, 请教下如何在Flink SQL中使用周期性的水印。  gt; amp;gt; 我们在消费kafka时, 想设置在没有数据时水印时间也能继续向前走, 用的是Flink SQL。