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 liujian <13...@qq.com> on 2021/05/28 02:49:40 UTC

回复: flink 维表

Hi:
我看了Leonard分享的视频了,是flink cdc流(订单表), join 时态表(debezium -&gt; kafka), 里面基于eventTime来进行操作的 , 因为我需要使用eventTime&nbsp; lookup表不支持eventTime
1, 这个时态表必须是changlog流吗, 就是&nbsp;debezium -&gt; kafka 这样, 用和主表的flink cdc不可以吗, 我用flink cdc测试没成功,因为flink cdc的维表好像不能指定watermark?
2, 订单表和时态表都需要一直写入数据来触发watermark吗? 


烦请解答下


------------------&nbsp;原始邮件&nbsp;------------------
发件人:                                                                                                                        "user-zh"                                                                                    <xbjtdcq@gmail.com&gt;;
发送时间:&nbsp;2021年5月27日(星期四) 下午5:14
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: flink 维表



HI,
可以修改的,修改后不需要重启作业。
修改后 flink 事实流 是能立即 查询到 最新的维表数据(前提是维表查询出来的数据没有开启cache)。
你可以理解下 lookup 维表的语法: A join B for system time as of A.proctime on A.id <http://a.id/&gt; = B.id <http://b.id/&gt; 就是 查询当前最新的维表(proctime代表了最新时间)并关联。


祝好,
Leonard

&gt; 在 2021年5月27日,16:35,liujian <13597820935@qq.com&gt; 写道:
&gt; 
&gt; 请问flink lookup表作为维表,那么lookup表是不是不能新增或者修改,如果修改了那么作业就需要重启?
&gt; 想要作业不重启咋操作

Re: flink 维表

Posted by Leonard Xu <xb...@gmail.com>.
Hi


> 1, 这个时态表必须是changlog流吗, 就是&nbsp;debezium -&gt; kafka 这样, 用和主表的flink cdc不可以吗, 我用flink cdc测试没成功,因为flink cdc的维表好像不能指定watermark?

我们常说的 lookup维表也是时态表的一种,lookup 正如这个单词字面意思一样,主流的每条数据到来时都按 lookup key 去外部DB中 查询 一条记录,这张维表自然就是最新的维表,这就是 proctime temporal join 的语义。

基于 Event-time temporal join,是按照 event-time 去取对应的版本, 与 proctime temporal join的区别是, proctime temporal join 只能取最新版本,Evet-time temporal join可以取该 event-time 对应的版本。
Flink 声明 时态表主只需要两个属性, 主键 和 event time, 其中主键甚至可以是推导的。可以看下这个文档【1】

> 2, 订单表和时态表都需要一直写入数据来触发watermark吗? 
是的,event-time temporal join 靠两条流的 watermark 来共同驱动。


祝好,
Leonard
【1】https://ci.apache.org/projects/flink/flink-docs-master/zh/docs/dev/table/concepts/versioned_tables/#%e6%97%b6%e6%80%81%e8%a1%a8

> 
> 烦请解答下
> 
> 
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:                                                                                                                        "user-zh"                                                                                    <xbjtdcq@gmail.com&gt;;
> 发送时间:&nbsp;2021年5月27日(星期四) 下午5:14
> 收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
> 
> 主题:&nbsp;Re: flink 维表
> 
> 
> 
> HI,
> 可以修改的,修改后不需要重启作业。
> 修改后 flink 事实流 是能立即 查询到 最新的维表数据(前提是维表查询出来的数据没有开启cache)。
> 你可以理解下 lookup 维表的语法: A join B for system time as of A.proctime on A.id <http://a.id/&gt; = B.id <http://b.id/&gt; 就是 查询当前最新的维表(proctime代表了最新时间)并关联。
> 
> 
> 祝好,
> Leonard
> 
> &gt; 在 2021年5月27日,16:35,liujian <13597820935@qq.com&gt; 写道:
> &gt; 
> &gt; 请问flink lookup表作为维表,那么lookup表是不是不能新增或者修改,如果修改了那么作业就需要重启?
> &gt; 想要作业不重启咋操作