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 "casel.chen" <ca...@126.com> on 2023/03/01 08:18:13 UTC

flink sql接cdc数据源关联维表写入下游数据库发现漏数据

flink sql上游接kafka canal json topic消费mysql同步过来的变更,接着关联几张维表,最后写入下游数据库发现漏数据。
随后在写目标数据库中加了一些日志后发现同一主键的变更记录(前后发生间隔时间很短)被发送到了不同的TaskManager处理,导致新数据被旧数据覆盖,造成漏数据现象。
请问:
1. cdc数据源关联维表后会被分散到不同TaskManager吗?什么情况下会发生?
2. 如何解决这个问题?是需要在写目标表之前加一层窗口去重[1]吗?


[1] https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/dev/table/sql/queries/window-deduplication/

Re: flink sql接cdc数据源关联维表写入下游数据库发现漏数据

Posted by Shengkai Fang <fs...@gmail.com>.
听上去像是数据乱序了。可以看看这个文档对应的解决下[1]

[1]
https://nightlies.apache.org/flink/flink-docs-master/docs/dev/table/concepts/determinism/

Best,
Shengkai

casel.chen <ca...@126.com> 于2023年3月1日周三 16:18写道:

> flink sql上游接kafka canal json topic消费mysql同步过来的变更,接着关联几张维表,最后写入下游数据库发现漏数据。
>
> 随后在写目标数据库中加了一些日志后发现同一主键的变更记录(前后发生间隔时间很短)被发送到了不同的TaskManager处理,导致新数据被旧数据覆盖,造成漏数据现象。
> 请问:
> 1. cdc数据源关联维表后会被分散到不同TaskManager吗?什么情况下会发生?
> 2. 如何解决这个问题?是需要在写目标表之前加一层窗口去重[1]吗?
>
>
> [1]
> https://nightlies.apache.org/flink/flink-docs-release-1.15/zh/docs/dev/table/sql/queries/window-deduplication/