Spark -Reading Terradata表和upsert到Oracle表中

时间:2017-09-29 18:13:48

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

我正在使用spark从Terradata表中读取数据,并希望在Oracle中 Upsert 表。我可以插入数据但是可以执行UPSERT吗?

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

dataframe.write.mode(SaveMode.Append).jdbc(url,table6,props)

2 个答案:

答案 0 :(得分:0)

从Spark 2.2开始,Spark中没有upsert。

所以,实现它的方法可以是:

  1. 迭代数据并找出使用foreach,foreachpartition

  2. 您可以通过在数据集上使用writeStream并覆盖ForeachWriter中的open(),close()和process()方法以插入/更新消息,以并行方式完成此操作。

    < / LI>

    希望这有帮助!

答案 1 :(得分:0)

我已安排spark作业每天运行一次,并使用dataframe.write.mode(SaveMode。覆盖)覆盖表.jdbc(url,table,props)。因此,每次spark作业运行时,它都将从Teradata表中获取所有数据并覆盖Oracle中的表。