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 zya <z_...@foxmail.com> on 2020/07/02 03:30:18 UTC
回复: 关于flink sql问题
十分感谢,目前我的解决方法是使用blink-planner,通过temporal table的方式实时加载数据
sql语句为:insert into mysql_sink select C.log_id, C.vic from (select A.log_id, case when B.cnt>0 and A.server>0 then B.cnt+1 else A.server end as vic from (select log_id, server, PROCTIME() as proctime from kafka_source) A left join mysql_source for SYSTEM_TIME AS OF A.proctime AS B on A.log_id=B.log_id ) C group by log_id,vic
参考文档如下:https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/temporal_tables.html
同时我实现了一个redis 的 temporal table,支持source和sink,感兴趣的同学可以一起交流下
祝好~
------------------ 原始邮件 ------------------
发件人: "Benchao Li"<libenchao@apache.org>;
发送时间: 2020年7月1日(星期三) 中午1:22
收件人: "user-zh"<user-zh@flink.apache.org>;
主题: Re: 关于flink sql问题
我理解你只需要把这同一个Mysql表再做一个维表即可。可以写两次DDL,一个给维表用,一个给sink用。
如果你就觉得它是实时变化的,你可以把维表的cache关掉,保证每次都是获取Mysql中最新的数据就可以了吧?
当然了,在DDL的时候并没有区分这个表是维表还是sink表,具体它是什么类型,只是根据你在SQL里面怎么使用来决定的。
理论上来讲,你一个DDL可以同时做维表也可以做Sink。(只是它们可能有些配置会不同,分开写两个DDL应该是更清晰一些)
zya <z_yuang@foxmail.com> 于2020年6月30日周二 下午11:26写道:
> 请问下,sink写出的表能做维表吗,因为sink会一直写入,做维表的话会一直动态变化
>
>
>
>
>
> &nbsp;
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Benchao Li"<libenchao@apache.org&gt;;
> 发送时间:&nbsp;2020年6月30日(星期二) 晚上11:14
> 收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
>
> 主题:&nbsp;Re: 关于flink sql问题
>
>
>
> 应该做一个维表Join就可以了。
>
>
> zya <z_yuang@foxmail.com&gt; 于2020年6月30日周二 下午9:02写道:
>
> &gt; Hi 各位,有个问题想请教一下:
> &gt; &amp;nbsp; &amp;nbsp; 目前我有一个功能想使用flink sql来完成,source是kafka,sink是mysql,
> &gt;
> &gt;
> &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在写入mysql的时候,我希望能先根据key获取mysql中的数据进行判断,然后决定如何写入数据,请问flink1.10目前能实现这种功能吗?
>
>
>
> --
>
> Best,
> Benchao Li
--
Best,
Benchao Li