Hi!

如果 statement set 已经包含了多个 insert 语句,那么写入 kafka 表和写入 db 应该是在同一个作业里进行的。如果写入 db
失败,那么产生的 exception 应该会让作业失败才对。这里 db 写入失败但 kafka 依旧写入是什么样的现象?

另外其实可以考虑分成两个作业,第一个作业将数据写入 db,第二个作业从 db 读出数据写入 kafka。关于捕获 db 数据的变化,可以看一下
Flink CDC connector[1]

[1] https://github.com/ververica/flink-cdc-connectors

悟空 <wukon...@foxmail.com> 于2021年8月26日周四 下午12:52写道:

> 能否详细说下呢,statement set[1] 是什么意思, 我是通过StatementSet.addInsertSql 将多个sql
> 加入的,然后执行execute()方法
>
>
>
>
> ------------------&nbsp;原始邮件&nbsp;------------------
> 发件人:
>                                                   "user-zh"
>                                                                     <
> fskm...@gmail.com&gt;;
> 发送时间:&nbsp;2021年8月26日(星期四) 中午12:36
> 收件人:&nbsp;"user-zh"<user-zh@flink.apache.org&gt;;
>
> 主题:&nbsp;Re: 基于flink 1.12 如何通过Flink SQL 实现 多sink端 在同一个事务中
>
>
>
> 说的是 statement set [1] 吗 ?
>
> [1]
>
> https://ci.apache.org/projects/flink/flink-docs-master/docs/dev/table/sqlclient/#execute-a-set-of-sql-statements
>
> 悟空 <wukon...@foxmail.com&gt; 于2021年8月26日周四 上午11:33写道:
>
> &gt; hi all:&amp;nbsp;
> &gt; &amp;nbsp; &amp;nbsp; 我目前基于flink 1.12 sql 来开发功能, 目前遇到一个问题, 我现在想实现
> 在一个事务里 先将kafka
> &gt; 源的数据写入到一张msyql 表中, 写入成功后再写入一张kafka的表里。如果写入db失败,则不写入kafka 。
> &gt; &amp;nbsp; &amp;nbsp;语句类似这种:
> &gt; &amp;nbsp; &amp;nbsp;insert into db_table_sink&amp;nbsp;select *
> from&amp;nbsp;
> &gt; kafka_source_table;
> &gt; &amp;nbsp; &amp;nbsp;insert into kafka_table_sink select * from
> kafka_source_table;
> &gt;
> &gt;
> &gt; &amp;nbsp; 请问flink SQL 有实现方式吗? 目前经过测试,发现如果db写入失败,但是kafka依旧写入,同时flink
> 程序没有挂掉。

回复