Re: Flink SQL 中同时写入多个 sink 时,是否能够保证先后次序

2022-10-19 文章 Zhiwen Sun
谢谢,有具体的思路嘛?

比如我需要先写入 jdbc 后再发送消息

是自定义一个 DynamicTableSink , 里面有 JdbcDynamicTableSink KafkaDynamicSink ,
还是说继承 JdbcDynamicTableSink , 自定义的类里面再去 new KafkaDynamicSink?


初看起来没办法知道什么时候 db 写入了。要知道什么时候写入,要去自定义 TableInsertOrUpdateStatementExecutor

Zhiwen Sun



On Tue, Oct 18, 2022 at 5:56 PM 悟空  wrote:

> Hi Zhiwen Sun:
>
>  自定义Sink 这个思路没问题的,我这边目前就是通过这种方式实现的,只需要自定义一个connector 融合多个sink
> connector ,相关options 沿用flink 官方connector的 ,这样方便后续升级。
>  如果有具体相关问题,欢迎讨论。
>
>
>
>
> --原始邮件--
> 发件人:
>   "user-zh"
> <
> pens...@gmail.com;
> 发送时间:2022年10月14日(星期五) 中午11:55
> 收件人:"user-zh"
> 主题:Re: Flink SQL 中同时写入多个 sink 时,是否能够保证先后次序
>
>
>
> 好的,谢谢大家,之前也想过这个方案,复用/继承 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   
>   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 写入,这就可能导致读取的数据不正确。
>   
>是否有办法保证 database 写入后,再发送消息?
>   
>Zhiwen Sun
>   
> 


Re: Flink SQL 中同时写入多个 sink 时,是否能够保证先后次序

2022-10-13 文章 Zhiwen Sun
好的,谢谢大家,之前也想过这个方案,复用/继承 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写道:
> >
> > 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 写入,这就可能导致读取的数据不正确。
> > >
> > > 是否有办法保证 database 写入后,再发送消息?
> > >
> > > Zhiwen Sun
> > >
>


Re: Flink SQL 中同时写入多个 sink 时,是否能够保证先后次序

2022-10-12 文章 Shuo Cheng
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 写入,这就可能导致读取的数据不正确。
>
> 是否有办法保证 database 写入后,再发送消息?
>
> Zhiwen Sun
>


回复: Flink SQL 中同时写入多个 sink 时,是否能够保证先后次序

2022-10-12 文章 仙路尽头谁为峰
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, 后续实时任务消费消息,再次读取 database, 如果消息先于
database 写入,这就可能导致读取的数据不正确。

是否有办法保证 database 写入后,再发送消息?

Zhiwen Sun