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

pyspark dataframe清空後保存到三角洲湖。

克裏斯汀
貢獻者

你好,

我麵臨一個問題,我希望得到一些幫助理解。

我已經創建了一個函數,應該檢查輸入數據是否已經存在於一個保存三角洲表,如果沒有,它應該創建一些計算和添加新的數據表。

當我運行代碼不保存數據,可以顯示dataframe(顯示(dataframe)),然而,在附加dataframe三角洲表的數據,顯示(dataframe)的新運行表明,忽然dataframe是空的。有人能幫我理解為什麼dataframe顯示為空,當唯一的變化是數據被保存到δ表?“顯示”在某種程度上再次運行連接函數?

謝謝你!

簡化代碼

#加載現有三角洲表

deltaDF = spark.read.format(δ).load (filePath)

#刪除任何行已經存在的數據是一樣的

條件=(<相關列的比較>)

noexistingDF = DF。加入(deltaDF, =條件=“left_anti”)

#執行一些額外的列的數據基於已經存在的數據

顯示器(noexistingDF) #成功顯示數據

#保存數據差值表

noexistingDF.write.format(“δ”).mode(“追加”).save (fileDestination)

顯示器(noexistingDF) #突然dataframe是空的

1接受解決方案

接受的解決方案

werners1
尊敬的貢獻者三世

是的。火花是懶惰的評價意義,它將執行代碼隻有在行動。顯示()是這樣的一個動作,也寫。

所以火花將首先執行查詢寫(讀、轉換寫),然後第二次做同樣的顯示(讀取、轉換、顯示)。left_anti加入將返回任何數據添加到三角洲表。

從不同的表,如果你想讀/寫df不會是空的(如讀表沒有改變)。

在原帖子查看解決方案

7回複7

werners1
尊敬的貢獻者三世

是的。火花是懶惰的評價意義,它將執行代碼隻有在行動。顯示()是這樣的一個動作,也寫。

所以火花將首先執行查詢寫(讀、轉換寫),然後第二次做同樣的顯示(讀取、轉換、顯示)。left_anti加入將返回任何數據添加到三角洲表。

從不同的表,如果你想讀/寫df不會是空的(如讀表沒有改變)。

克裏斯汀
貢獻者

好的,謝謝你!你知道有一種方法可以複製表來解決它所以顯示不變換根據讀表但顯示數據之前保存嗎?

werners1
尊敬的貢獻者三世

有幾種方法。

但是他們都下來一樣的:寫df到磁盤。

如果你寫noexistingDF到磁盤(通過火花。寫或關卡),然後讀它,你在那裏。

複製三角洲表本身似乎過分了(雖然這是可以做到的)。

匿名
不適用

嗨@Christine需要請讓我們知道如果@Werner Stinckens回答幫助你減輕這個問題或者你需要進一步的幫助嗎?

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

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

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

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

Baidu
map