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