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 -> kafka), 里面基于eventTime来进行操作的 , 因为我需要使用eventTime lookup表不支持eventTime
1, 这个时态表必须是changlog流吗, 就是 debezium -> kafka 这样, 用和主表的flink cdc不可以吗, 我用flink cdc测试没成功,因为flink cdc的维表好像不能指定watermark?
2, 订单表和时态表都需要一直写入数据来触发watermark吗?
烦请解答下
------------------ 原始邮件 ------------------
发件人: "user-zh" <xbjtdcq@gmail.com>;
发送时间: 2021年5月27日(星期四) 下午5:14
收件人: "user-zh"<user-zh@flink.apache.org>;
主题: Re: flink 维表
HI,
可以修改的,修改后不需要重启作业。
修改后 flink 事实流 是能立即 查询到 最新的维表数据(前提是维表查询出来的数据没有开启cache)。
你可以理解下 lookup 维表的语法: A join B for system time as of A.proctime on A.id <http://a.id/> = B.id <http://b.id/> 就是 查询当前最新的维表(proctime代表了最新时间)并关联。
祝好,
Leonard
> 在 2021年5月27日,16:35,liujian <13597820935@qq.com> 写道:
>
> 请问flink lookup表作为维表,那么lookup表是不是不能新增或者修改,如果修改了那么作业就需要重启?
> 想要作业不重启咋操作
Re: flink 维表
Posted by Leonard Xu <xb...@gmail.com>.
Hi
> 1, 这个时态表必须是changlog流吗, 就是 debezium -> 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
>
> 烦请解答下
>
>
> ------------------ 原始邮件 ------------------
> 发件人: "user-zh" <xbjtdcq@gmail.com>;
> 发送时间: 2021年5月27日(星期四) 下午5:14
> 收件人: "user-zh"<user-zh@flink.apache.org>;
>
> 主题: Re: flink 维表
>
>
>
> HI,
> 可以修改的,修改后不需要重启作业。
> 修改后 flink 事实流 是能立即 查询到 最新的维表数据(前提是维表查询出来的数据没有开启cache)。
> 你可以理解下 lookup 维表的语法: A join B for system time as of A.proctime on A.id <http://a.id/> = B.id <http://b.id/> 就是 查询当前最新的维表(proctime代表了最新时间)并关联。
>
>
> 祝好,
> Leonard
>
> > 在 2021年5月27日,16:35,liujian <13597820935@qq.com> 写道:
> >
> > 请问flink lookup表作为维表,那么lookup表是不是不能新增或者修改,如果修改了那么作业就需要重启?
> > 想要作业不重启咋操作