开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

dataworks主键冲突数据回滚怎么办?

dataworks主键冲突数据回滚怎么办?

展开
收起
真的很搞笑 2023-10-17 10:45:04 91 0
3 条回答
写回答
取消 提交回答
  • mysql等关系型数据库数据写入时由于表有设置主键造成的数据写入时回滚,导致任务整体同步慢:典型报错:
    WARN CommonRdbmsWriter$Task - 回滚此次写入, 采用每次写入一行方式提交. 因为:java.sql.BatchUpdateException: Duplicate entry 'xxxx' for key 'PRIMARY'
    image.png

    分析:由于写入的数据库的表有设置主键或者唯一约束,来源端数据值有重复值的情况下,以insert模式写入会造成主键冲突的问题,数据库侧进行写入操作的回滚,此时需要根据需要调整mysql writer的写入模式。
    可以选择on duplicate key update或者replace into模式

    image.png

    ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-10-18 17:52:03
    赞同 展开评论 打赏
  • 月移花影,暗香浮动

    在DataWorks数据同步中,如果主键冲突发生了,您可以采取以下步骤进行处理:

    1. 首先,您需要确认日志中的回滚写入操作信息。这个信息通常会包含报错提示,例如"Detail: Key (id)=(2022080640) already exists.",由此可以定位到主键冲突的问题。

    2. 接下来,请检查并确保数据源中没有重复的主键值。如果存在重复的主键,那么需要先处理掉重复的主键值才能进行数据同步。

    3. 如果问题仍然存在,那么可以尝试使用数据库的update功能来更新目标表已有数据行。具体做法是,当写出数据和目标存储已有数据发生数据约束时(如主键冲突、唯一键约束、外键约束等),数据库会使用来源数据update更新目标表已有数据行。

    4. 最后,如果目标表存在多个数据约束的情况下,数据替换可能会失败并产生脏数据。这种情况下,您需要进一步排查问题原因并找出合适的解决方案。

    2023-10-17 14:21:23
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在DataWorks中,如果在数据同步过程中遇到主键冲突的情况,可以通过以下步骤进行数据回滚:

    1. 打开DataWorks控制台,进入数据集成任务管理页面。
    2. 在数据集成任务管理页面中,找到并选择需要回滚的同步任务。
    3. 在同步任务页面中,点击“回滚任务”按钮,选择回滚的数据版本和回滚的时间点。
    4. 点击“确定”按钮,执行数据回滚操作。
    2023-10-17 13:31:51
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks调度任务迁移最佳实践-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks商业化资源组省钱秘籍-2020飞天大数据平台实战应用第一季 立即下载

    相关实验场景

    更多