我正在使用Spark从Terradata表中读取数据,并且想要在Oracle中使用Upsert表。我能够插入数据,但我可以执行UPSERT吗?Spark -Reading Terradata表和插入Oracle表
这就是我将数据插入Oracle的方式。
dataframe.write.mode(SaveMode.Append).jdbc(URL,表6,道具)
我正在使用Spark从Terradata表中读取数据,并且想要在Oracle中使用Upsert表。我能够插入数据,但我可以执行UPSERT吗?Spark -Reading Terradata表和插入Oracle表
这就是我将数据插入Oracle的方式。
dataframe.write.mode(SaveMode.Append).jdbc(URL,表6,道具)
我已经安排了spark工作,每天运行一次,并使用dataframe.write.mode(SaveMode。Overwrite).jdbc(url,table,props)覆盖表格。因此,每次执行spark任务时,都会从Teradata表中提取所有数据并覆盖Oracle中的表。
有一个在火花没有UPSERT作为火花2.2。
那么,如何实现这一目标可能是:
遍历数据,并计算出使用的foreach,foreachpartition
可以很好地做到这一点以并行方式使用writeStream覆盖数据集并覆盖ForeachWriter中的open(),close()和process()方法来插入/更新消息。
希望这有助于!
感谢@abhay的回复,但是流不能使用它,因为它是一个普通的数据库,它将是一个火花的工作。如果您可以向我展示解决方案的小样本代码,这将非常有帮助 –
任何人都请建议 –