取消
顯示的結果
而不是尋找
你的意思是:

我怎麼能插入2表在一個數據庫事務和SQL / pyspark火花嗎?

thomasthomas
新的貢獻者二世

你好,

我有一個postgres數據庫,其中包含兩個表:a和B。

我也有2δ表,稱為C和D。我的任務是把數據從A到C和B D——如果失敗的東西,然後離開這一切。

與python是很容易的。建立連接,然後創建一個光標,最後將所有數據推向DB和提交。關閉遊標和連接。

pyspark / sql這不是微不足道的火花。它看起來像火花每次插入操作後提交。這不是理想,因為我不想留下任何如果某事失敗背後的混亂。

另一種解決方案是維持一個臨時模式和創建一個postgres連接一旦所有的數據被推到臨時模式。然後調用該函數,然後如果某事失敗的函數,然後一切都是幹淨的。

請建議。

4回複4

daniel_sahal
尊敬的貢獻者三世

@thomasthomas
我要做的是使用恢複回滾功能失敗。
這將是這樣工作的:

從pyspark.sql。功能導入馬克斯_max, col tgt_table_name = " catalog.schema。tbl_name“#得到當前表的版本ver_df =(火花。sql (f”描述曆史{tgt_table_name}”) .select (_max(坳(“版本”)).alias(“版本”)))tbl_ver = df.collect () [0]。版本試試:#代碼傳輸數據在這裏除了例外:火花。sql (f”恢複版本表{tgt_table_name} {tbl_ver}”)提高異常(f”{tgt_table_name}失敗的負載。恢複到{tbl_ver}”)

thomasthomas
新的貢獻者二世

正如我上麵所描述的那樣,我想寫的內容2δ表2 Postgres表的insert語句與火花SQL或Pyspark。

恢複版本/描述語句是有效的語句,當你與三角洲表。否則他們不工作。

@Vidula_Khanna@daniel_sahal

daniel_sahal
尊敬的貢獻者三世

@thomasthomas
啊,對不起。我誤解了你的問題。

在這種情況下這是一個很好的方法你描述的方式——設置某事像“登台”表和推動數據。畢竟是——將它與實際的表。

Vidula_Khanna
主持人
主持人

@thomasthomas

我們還沒有聽到來自你自從上次反應@daniel_sahal,我檢查看看她的建議幫助你。

否則,如果你有任何解決方案,請與社區分享,因為它可以幫助別人。

同時,請別忘了點擊“選擇最佳”按鈕時提供的信息幫助解決你的問題。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map