我在 Spark 中制作了 Dataframe。
資料框具有新行和資料庫表具有的關鍵列的相同行。
我需要插入新行并更新現有行。
例如:
資料框:
| 鑰匙 1 | 鑰匙2 | 價值 |
|---|---|---|
| 1 | 11 | 新價值 |
| 2 | 22 | 價值 |
資料庫中的表:
| 鑰匙 1 | 鑰匙2 | 價值 |
|---|---|---|
| 1 | 11 | 舊值 |
| 3 | 33 | 其他價值 |
我需要將我的 DataFrame 寫入資料庫并獲得下一個結果:
資料庫中的表:
| 鑰匙 1 | 鑰匙2 | 價值 |
|---|---|---|
| 1 | 11 | 新價值 |
| 2 | 22 | 價值 |
| 3 | 33 | 其他價值 |
在哪里
(1, 11) 已更新
(2, 22) 已插入
(3, 33) 沒有改變
我想有兩種可能的解決方案:
- 合并新 DataFrame 中的資料并完全重寫資料庫中的表
- 或者直接從 DataFrame 插入/更新資料到資料庫中
我不知道如何處理這個問題。使用哪些工具來完成這項任務?幫助我了解朝哪個方向移動。
uj5u.com熱心網友回復:
不幸的是,目前 Spark 中沒有 SaveMode.Upsert 功能。(SaveMode.overwrite) 將用您的 Dataframe 覆寫您現有的表。
您可以重新磁區資料幀并為每個磁區創建一個 JDBC/POSTGRESS 連接,并為 upsert 執行批量更新。
https://medium.com/@thomaspt748/how-to-upsert-data-into-relational-database-using-spark-7d2d92e05bb9
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360756.html
上一篇:Spark將資料寫回HDFS
