【问题标题】:How to insert, update rows in database from Spark Dataframe如何从 Spark Dataframe 插入、更新数据库中的行
【发布时间】:2021-12-28 05:39:42
【问题描述】:

我在 Spark 中制作了 Dataframe。

Dataframe 有新的行和数据库表的键列相同的行。

我需要插入新行并更新现有行。

例如:

数据框:

Key1 Key2 Value
1 11 new value
2 22 value

数据库中的表:

Key1 Key2 Value
1 11 old value
3 33 other value

我需要将我的 DataFrame 写入数据库并获得下一个结果:

数据库中的表:

Key1 Key2 Value
1 11 new value
2 22 value
3 33 other value

在哪里

(1, 11) 已更新

(2, 22) 被插入

(3, 33) 没有改变

我想有两种可能的解决方案:

  1. 合并新DataFrame中的数据并完全重写Database中的表
  2. 或将数据从 DataFrame 直接插入/更新到数据库中

我不知道该怎么做。该任务使用哪些工具?帮助我了解前进的方向。

【问题讨论】:

  • 我想我只需要使用:DataFrame.write.mode(SaveMode.overwrite)

标签: dataframe apache-spark apache-spark-sql


【解决方案1】:

很遗憾,目前 spark 中没有 SaveMode.Upsert 功能。 (SaveMode.overwrite) 将用您的 Dataframe 覆盖您现有的表。

您可以重新分区数据帧并为每个分区创建 JDBC/POSTGRESS 连接,并为 upsert 执行批量更新。

https://medium.com/@thomaspt748/how-to-upsert-data-into-relational-database-using-spark-7d2d92e05bb9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多