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/06/30 15:26:00 UTC

回复: 关于flink sql问题

请问下,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

回复: 关于flink sql问题

Posted by zya <z_...@foxmail.com>.
十分感谢,目前我的解决方法是使用blink-planner,通过temporal table的方式实时加载数据


sql语句为:insert into mysql_sink select C.log_id, C.vic from (select A.log_id, case when B.cnt&gt;0 and A.server&gt;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&nbsp;


参考文档如下:https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/temporal_tables.html


同时我实现了一个redis 的&nbsp;temporal table,支持source和sink,感兴趣的同学可以一起交流下

祝好~


&nbsp;




------------------&nbsp;原始邮件&nbsp;------------------
发件人:&nbsp;"Benchao Li"<libenchao@apache.org&gt;;
发送时间:&nbsp;2020年7月1日(星期三) 中午1:22
收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;

主题:&nbsp;Re: 关于flink sql问题



我理解你只需要把这同一个Mysql表再做一个维表即可。可以写两次DDL,一个给维表用,一个给sink用。
如果你就觉得它是实时变化的,你可以把维表的cache关掉,保证每次都是获取Mysql中最新的数据就可以了吧?

当然了,在DDL的时候并没有区分这个表是维表还是sink表,具体它是什么类型,只是根据你在SQL里面怎么使用来决定的。
理论上来讲,你一个DDL可以同时做维表也可以做Sink。(只是它们可能有些配置会不同,分开写两个DDL应该是更清晰一些)

zya <z_yuang@foxmail.com&gt; 于2020年6月30日周二 下午11:26写道:

&gt; 请问下,sink写出的表能做维表吗,因为sink会一直写入,做维表的话会一直动态变化
&gt;
&gt;
&gt;
&gt;
&gt;
&gt; &amp;nbsp;
&gt;
&gt;
&gt;
&gt;
&gt; ------------------&amp;nbsp;原始邮件&amp;nbsp;------------------
&gt; 发件人:&amp;nbsp;"Benchao Li"<libenchao@apache.org&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年6月30日(星期二) 晚上11:14
&gt; 收件人:&amp;nbsp;"user-zh"<user-zh@flink.apache.org&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: 关于flink sql问题
&gt;
&gt;
&gt;
&gt; 应该做一个维表Join就可以了。
&gt;
&gt;
&gt; zya <z_yuang@foxmail.com&amp;gt; 于2020年6月30日周二 下午9:02写道:
&gt;
&gt; &amp;gt; Hi 各位,有个问题想请教一下:
&gt; &amp;gt; &amp;amp;nbsp; &amp;amp;nbsp; 目前我有一个功能想使用flink sql来完成,source是kafka,sink是mysql,
&gt; &amp;gt;
&gt; &amp;gt;
&gt; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;在写入mysql的时候,我希望能先根据key获取mysql中的数据进行判断,然后决定如何写入数据,请问flink1.10目前能实现这种功能吗?
&gt;
&gt;
&gt;
&gt; --
&gt;
&gt; Best,
&gt; Benchao Li



-- 

Best,
Benchao Li

Re: 关于flink sql问题

Posted by Benchao Li <li...@apache.org>.
我理解你只需要把这同一个Mysql表再做一个维表即可。可以写两次DDL,一个给维表用,一个给sink用。
如果你就觉得它是实时变化的,你可以把维表的cache关掉,保证每次都是获取Mysql中最新的数据就可以了吧?

当然了,在DDL的时候并没有区分这个表是维表还是sink表,具体它是什么类型,只是根据你在SQL里面怎么使用来决定的。
理论上来讲,你一个DDL可以同时做维表也可以做Sink。(只是它们可能有些配置会不同,分开写两个DDL应该是更清晰一些)

zya <z_...@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