开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

flink cdc delete主键删除源表一条记录,目标表未删除数据问题

flink cdc delete源表,目标表未删除,
如下:
INSERT INTO sink_table (
id,
device_id,
name,
device_type,
device_name,
gateway_serial_num,
points_model_id,
device_uniq_code,
etl_time)
SELECT
t1.id,
t1.device_id,
t2.device_type,
t2.device_name,
t2.gateway_serial_num,
t2.points_model_id,
CONCAT_WS('-', t1.station_id, t1.data_object_id),
CURRENT_TIMESTAMP
FROM table_a t1
LEFT JOIN
(
SELECT
id,
device_id,
name AS device_name,
cim_code AS device_type,
gateway_serial_num,
points_model_id
FROM table_b
UNION ALL
SELECT
id,
dg_id AS device_id,
name AS device_name,
type AS device_type,
gateway_serial_num,
CAST(NULL AS BIGINT) AS points_model_id
FROM table_c
) t2
ON t1.device_id = t2.id;

主表delete 一条数据:
delete from table_a where id=1202893267871432704;

查询目标表数据还在

展开
收起
1731446667249005 2023-11-07 15:28:56 134 0
3 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    如果删除源表中的某条记录后,目标表的数据仍然存在,可能是由于CDC尚未完成同步。请耐心等待一段时间,直到CDC完成同步操作。期间,请勿手动干预或清理目标表数据。

    2023-11-08 14:33:22
    赞同 展开评论 打赏
  • 根据我的知识库,您想要删除表 A 中的一条记录,但是同步到表 B 后仍能看到该记录。
    原因可能是源表和目标表之间存在依赖关系。请检查一下是否存在以下情况:

    1. 如果存在,那么源表和目标表可能没有完全独立的唯一键。
    2. 当前实例未同步到目标表,因此需要等待一段时间才会删除目标表中的相应记录。
    3. 可能存在其他同步任务正在依赖源表中的这条记录。
    2023-11-07 22:30:40
    赞同 展开评论 打赏
  • 这可能是因为Flink CDC的流处理特性导致的。Flink CDC是基于事件驱动的,它会持续监控源数据库的变化,并将这些变化推送到目标数据库。这意味着如果一个记录在被删除后又被重新插入到源数据库中,那么这个记录也可能会再次出现在目标数据库中。
    此外,如果你是在删除源数据库中的记录后立即查询目标数据库,那么你可能仍然能看到这条记录,因为Flink CDC的数据同步可能存在一定的延迟。你需要等待一段时间才能确保所有的更改都被正确地反映在目标数据库上。

    2023-11-07 15:37:58
    赞同 1 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    Flink CDC Meetup PPT - 龚中强 立即下载
    Flink CDC Meetup PPT - 王赫 立即下载
    Flink CDC Meetup PPT - 覃立辉 立即下载