JDBC编写与PrimaryKeyViolation失败错误

JDBC编写SQL数据库与“PrimaryKeyViolation”错误或失败导致重复数据

写的harikrishnan.kunhumveettil

去年发表在:2022年5月24日

问题

您正在使用JDBC编写SQL表主键约束,和工作失败PrimaryKeyViolation错误。

或者,你使用JDBC编写SQL表没有主键约束,和写你最近看到重复的条目在表。

导致

当Apache火花执行JDBC编写一个分区的DataFrame写入到一个SQL表。这通常是作为一个JDBC事务,为了避免多次插入数据。然而,如果事务失败后提交发生,但在最后阶段完成之前,有可能重复的数据复制到SQL表。

PrimaryKeyViolation写操作时发生错误试图插入一个主键重复条目。

解决方案

您应该使用缓冲区写入临时表,并确保没有重复数据。

  1. 验证投机执行禁用你的火花配置:火花。错误的猜测。这个默认情况下是禁用的。
  2. 创建一个临时表的SQL数据库。
  3. 修改你的火花代码写入临时表。
  4. 火花写完成后,检查临时表,以确保没有重复的数据。
  5. 将临时表与目标表的SQL数据库。
  6. 删除临时表。
删除

信息

这个方法应该只用于如果遇到上市数据重复问题,有一个小的性能损失相比,引发直接写入目标表的工作。


这篇文章有用吗?