关于flink sql问题

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

关于flink sql问题

lemon
Hi 各位,有个问题想请教一下:
    目前我有一个功能想使用flink sql来完成,source是kafka,sink是mysql,
    在写入mysql的时候,我希望能先根据key获取mysql中的数据进行判断,然后决定如何写入数据,请问flink1.10目前能实现这种功能吗?
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink sql问题

Benchao Li-2
应该做一个维表Join就可以了。


zya <[hidden email]> 于2020年6月30日周二 下午9:02写道:

> Hi 各位,有个问题想请教一下:
> &nbsp; &nbsp; 目前我有一个功能想使用flink sql来完成,source是kafka,sink是mysql,
>
> &nbsp;&nbsp;&nbsp;&nbsp;在写入mysql的时候,我希望能先根据key获取mysql中的数据进行判断,然后决定如何写入数据,请问flink1.10目前能实现这种功能吗?



--

Best,
Benchao Li
Reply | Threaded
Open this post in threaded view
|

回复: 关于flink sql问题

lemon
请问下,sink写出的表能做维表吗,因为sink会一直写入,做维表的话会一直动态变化





&nbsp;




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

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



应该做一个维表Join就可以了。


zya <[hidden email]&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
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink sql问题

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

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

zya <[hidden email]> 于2020年6月30日周二 下午11:26写道:

> 请问下,sink写出的表能做维表吗,因为sink会一直写入,做维表的话会一直动态变化
>
>
>
>
>
> &nbsp;
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Benchao Li"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年6月30日(星期二) 晚上11:14
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: 关于flink sql问题
>
>
>
> 应该做一个维表Join就可以了。
>
>
> zya <[hidden email]&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
Reply | Threaded
Open this post in threaded view
|

回复: 关于flink sql问题

lemon
十分感谢,目前我的解决方法是使用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"<[hidden email]&gt;;
发送时间:&nbsp;2020年7月1日(星期三) 中午1:22
收件人:&nbsp;"user-zh"<[hidden email]&gt;;

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



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

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

zya <[hidden email]&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"<[hidden email]&amp;gt;;
&gt; 发送时间:&amp;nbsp;2020年6月30日(星期二) 晚上11:14
&gt; 收件人:&amp;nbsp;"user-zh"<[hidden email]&amp;gt;;
&gt;
&gt; 主题:&amp;nbsp;Re: 关于flink sql问题
&gt;
&gt;
&gt;
&gt; 应该做一个维表Join就可以了。
&gt;
&gt;
&gt; zya <[hidden email]&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
Reply | Threaded
Open this post in threaded view
|

Re: 关于flink sql问题

forideal
In reply to this post by Benchao Li-2
Hi 本超



  关于Mysql 做维表,关掉cache后的优化手段,有什么建议吗?



比如,20k records per second 的流量,关掉 cache 会对 mysql 产生很大的压力。不知道 MySQL Lookup 做成 async + batch 会不会提升性能或者有副作用。



Best forideal.







在 Benchao Li <[hidden email]>,2020年7月1日 13:22写道:


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

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

zya <[hidden email]> 于2020年6月30日周二 下午11:26写道:

> 请问下,sink写出的表能做维表吗,因为sink会一直写入,做维表的话会一直动态变化
>
>
>
>
>
> &nbsp;
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:&nbsp;"Benchao Li"<[hidden email]&gt;;
> 发送时间:&nbsp;2020年6月30日(星期二) 晚上11:14
> 收件人:&nbsp;"user-zh"<[hidden email]&gt;;
>
> 主题:&nbsp;Re: 关于flink sql问题
>
>
>
> 应该做一个维表Join就可以了。
>
>
> zya <[hidden email]&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