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. 刪除臨時表。
刪除

信息

這個方法應該隻用於如果遇到上市數據重複問題,有一個小的性能損失相比,引發直接寫入目標表的工作。