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的回覆,但是流不能使用它,因爲它是一個普通的數據庫,它將是一個火花的工作。如果您可以向我展示解決方案的小樣本代碼,這將非常有幫助 –