hi all:
我们有个场景,需要 Flink SQL 同时写入消息和 database, 后续实时任务消费消息,再次读取 database, 如果消息先于
database 写入,这就可能导致读取的数据不正确。
是否有办法保证 database 写入后,再发送消息?
Zhiwen Sun
Flink SQL 自身机制无法保证同一个作业多个 sink 的写入次序。 是否可以考虑从业务逻辑上动手脚,比如写入消息队列 sink 前加个 udf
filter, udf 查询 database,满足条件才写入消息队列,当然这种方式对性能可能有影响。
On Wed, Oct 12, 2022 at 2:41 PM Zhiwen Sun wrote:
> hi all:
>
> 我们有个场景,需要 Flink SQL 同时写入消息和 database, 后续实时任务消费消息,再次读取 database, 如果消息先于
> database 写入,这就可能导致读取的数据不正确。
>
>
在一个自定义sink中实现先写database,再发消息。
或者2个都是自定义的,但是不能通过sink,因为sink后就没数据了。通过process,第一个process完成写入database后,后续process发送消息。
Shuo Cheng 于2022年10月12日周三 16:59写道:
>
> Flink SQL 自身机制无法保证同一个作业多个 sink 的写入次序。 是否可以考虑从业务逻辑上动手脚,比如写入消息队列 sink 前加个 udf
> filter, udf 查询 database,满足条件才写入消息队列,当然这种方式对性能可能有影响。
>
> On Wed, Oc
好的,谢谢大家,之前也想过这个方案,复用/继承 JdbcDynamicTableSink 相关代码自定义 connector 。
Zhiwen Sun
On Fri, Oct 14, 2022 at 10:08 AM yidan zhao wrote:
> 在一个自定义sink中实现先写database,再发消息。
>
> 或者2个都是自定义的,但是不能通过sink,因为sink后就没数据了。通过process,第一个process完成写入database后,后续process发送消息。
>
> Shuo Cheng 于2022年10月12日周三 16:59写道:
> >
>
"user-zh"
> <
> pens...@gmail.com>;
> 发送时间: 2022年10月14日(星期五) 中午11:55
> 收件人: "user-zh"
> 主题: Re: Flink SQL 中同时写入多个 sink 时,是否能够保证先后次序
>
>
>
> 好的,谢谢大家,之前也想过这个方案,复用/继
Hi Zhiwen:
可以试试将kafkasink设置为exactly-once,同时下游任务的kafkasource设置为读已提交,不过如果你的checkpoint间隔很长,下游要很久才能从kafka拿到数据。
从 Windows 版邮件发送
发件人: Zhiwen Sun
发送时间: 2022年10月12日 14:42
收件人: user-zh@flink.apache.org
主题: Flink SQL 中同时写入多个 sink 时,是否能够保证先后次序
hi all:
我们有个场景,需要 Flink SQL 同时写入消息和 database, 后续实时任务消费