问题
您正在使用JDBC编写SQL表主键约束,和工作失败PrimaryKeyViolation错误。
或者,你使用JDBC编写SQL表没有主键约束,和写你最近看到重复的条目在表。
导致
当Apache火花执行JDBC编写一个分区的DataFrame写入到一个SQL表。这通常是作为一个JDBC事务,为了避免多次插入数据。然而,如果事务失败后提交发生,但在最后阶段完成之前,有可能重复的数据复制到SQL表。
的PrimaryKeyViolation写操作时发生错误试图插入一个主键重复条目。
解决方案
您应该使用缓冲区写入临时表,并确保没有重复数据。
- 验证投机执行禁用你的火花配置:火花。错误的猜测。这个默认情况下是禁用的。
- 创建一个临时表的SQL数据库。
- 修改你的火花代码写入临时表。
- 火花写完成后,检查临时表,以确保没有重复的数据。
- 将临时表与目标表的SQL数据库。
- 删除临时表。