0

我正在使用Spark从Terradata表中读取数据,并且想要在Oracle中使用Upsert表。我能够插入数据,但我可以执行UPSERT吗?Spark -Reading Terradata表和插入Oracle表

这就是我将数据插入Oracle的方式。

dataframe.write.mode(SaveMode.Append).jdbc(URL,表6,道具)

+0

任何人都请建议 –

回答

0

我已经安排了spark工作,每天运行一次,并使用dataframe.write.mode(SaveMode。Overwrite).jdbc(url,table,props)覆盖表格。因此,每次执行spark任务时,都会从Teradata表中提取所有数据并覆盖Oracle中的表。

0

有一个在火花没有UPSERT作为火花2.2。

那么,如何实现这一目标可能是:

  1. 遍历数据,并计算出使用的foreach,foreachpartition

  2. 可以很好地做到这一点以并行方式使用writeStream覆盖数据集并覆盖ForeachWriter中的open(),close()和process()方法来插入/更新消息。

希望这有助于!

+0

感谢@abhay的回复,但是流不能使用它,因为它是一个普通的数据库,它将是一个火花的工作。如果您可以向我展示解决方案的小样本代码,这将非常有帮助 –