scala 有没有一种方法可以使用Spark JDBC将数据插入到SQL表中,而不插入重复项和丢失已有的数据?

a7qyws3x  于 2022-11-09  发布在  Scala
关注(0)|答案(1)|浏览(139)

我正在尝试使用df.Write.jdbc将Spark Dataframe 写入到PostgreSQL表中。问题是,我希望确保不会丢失表中已有的数据(使用SaveMode.Append),但也要确保避免插入已插入其中的重复数据。
1.因此,如果我使用保存模式。覆盖:
-表将丢失所有以前的数据
1.如果我使用保存模式。追加:

  • 表不会被删除,但会插入重复的记录。
  • 如果我将此模式与数据库中已有的主键一起使用(这将提供唯一约束),它将返回错误。

有什么办法可以解决这个问题吗?谢谢

wgeznvg7

wgeznvg71#

我所做的是过滤掉现有记录,这意味着额外的读取以获取现有ID,并对要追加的数据执行Fitler操作。但它为我做了这件事。
我认为在这篇文章中有一个更复杂的解决方案:
https://medium.com/@thomaspt748/how-to-upsert-data-into-a-relational-database-using-apache-spark-part-1-python-version-b43b9761bbf2
可能很晚了,但刚刚开始了。

相关问题