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

DataWorks背景: 有个odps任务,往事物表里插入数据;重跑一次a1的值翻一倍,为什么?

DataWorks背景: 有个odps任务,往事物表里插入数据;有个调度任务把odps表数据同步业务库。问题:当odps任务出错,在运维管理收到点击重跑,事物表本来有一条比如code为a1值为10。重跑一次a1的值为啥翻一倍?

展开
收起
真的很搞笑 2024-01-22 19:10:03 80 0
2 条回答
写回答
取消 提交回答
  • 看下任务配置的 数据去向端有没有设置清空写入 大概率是没有设置清空写入导致的 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

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

    在DataWorks中,当ODPS任务出错并重新运行时,数据的值可能会翻倍的原因可能有以下几点:

    1. 插入操作重复执行:如果重跑的任务包含了插入操作,而没有先进行删除或清空操作,那么在重跑时会再次将相同的数据插入到表中,导致数据的重复。例如,原本表中有一条code为a1值为10的数据,重跑后会再次插入一条相同的数据,导致表中出现两条相同的数据,从而使得总值翻倍。

    2. 更新操作重复执行:如果重跑的任务包含了更新操作,并且更新的条件是匹配到已经存在的数据,那么在重跑时会再次对相同的数据进行更新操作,导致数据的重复更新。例如,原本表中有一条code为a1值为10的数据,重跑后会再次对该数据进行更新操作,将值翻倍为20,从而使得总值翻倍。

    为了避免数据翻倍的情况发生,可以采取以下措施:

    1. 在重跑任务之前,先进行数据清理操作,例如删除或清空表中的数据,确保重跑任务时表中没有重复的数据。

    2. 在编写任务逻辑时,考虑使用幂等性操作,即无论操作执行多少次,结果都是相同的。例如,使用UPDATE操作而不是INSERT操作来更新数据,确保每次操作只针对需要更新的数据进行操作。

    3. 在任务调度过程中,确保任务的依赖关系正确设置,避免重复执行相同的任务。可以通过设置任务的依赖关系、使用锁机制等方式来实现。

    综上所述,当ODPS任务出错并重新运行时,数据的值可能会翻倍的原因是由于插入或更新操作重复执行导致的。为了解决这个问题,可以在重跑任务之前进行数据清理操作,或者在编写任务逻辑时考虑使用幂等性操作,并确保任务的依赖关系正确设置。

    2024-01-22 21:38:01
    赞同 展开评论 打赏

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

相关产品

  • 大数据开发治理平台 DataWorks
  • 热门讨论

    热门文章

    相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks调度任务迁移最佳实践-2020飞天大数据平台实战应用第一季 立即下载
    基于DataWorks数据服务构建疫情大屏-2020飞天大数据平台实战应用第一季 立即下载