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

最好的方法是什麼照顧刪除和重命名列模式評估。

mickniz
貢獻者

我需要從磚的人一些建議。按照文檔的模式評價刪除和重命名數據覆蓋。它意味著我們鬆散的數據(因為我不是刪除但上演)讀取數據。是否可以查詢舊數據使用曆史和恢複。

6個回答6

yogu
尊敬的貢獻者三世

如果你想從你的數據然後重命名列可以使用函數withColumn()和withColumnRenamed ()。

是否可以查詢舊數據使用曆史和恢複使用δ- - >是的我們可以查詢舊數據的時間旅行的能力。如果你寫進一個三角洲表或目錄,每個操作都是自動版本。您可以訪問數據的不同版本兩種不同的方式:

1)使用時間戳

Scala的語法:

您可以提供時間戳或日期的字符串作為一個選項DataFrame讀者:

val df = spark.read

.format(“δ”)

.option (“timestampAsOf”、“2019-01-01”)

.load(路徑“/ / /我的/表”)

在Python中:

df =火花。讀\

.format \(“δ”)

.option \ (“timestampAsOf”、“2019-01-01”)

.load(路徑“/ / /我的/表”)

SQL語法:

SELECT count(*)從my_table時間戳的“2019-01-01”

SELECT count(*)從my_table時間戳的date_sub(當前日期(),1)

SELECT count(*)從my_table時間戳的“2019-01-01 01:30:00.000”

2)使用一個版本號

在三角洲,每寫一個版本號,您可以使用版本號穿越時間。

Scala的語法:

val df = spark.read

.format(“δ”)

.option (“versionAsOf”、“5238”)

.load(路徑“/ / /我的/表”)

val df = spark.read

.format(“δ”)

.load(路徑“/ / /我的/ table@v5238”)

Python語法:

df =火花。讀\

.format \(“δ”)

.option \ (“versionAsOf”、“5238”)

.load(路徑“/ / /我的/表”)

df =火花。讀\

.format \(“δ”)

.load(路徑“/ / /我的/ table@v5238”)

SQL語法:

SELECT count(*)從my_table版本在5238年

從my_table@v5238 SELECT count (*)

從delta. SELECT count(*)“/道路/ /我/ table@v5238”

謝謝你的回應。我知道我們可以做但是我的問題是當我們覆蓋數據與新模式,將這些數據是可用的

@Yogita Chavan

謝謝你的回應。我知道我可以獲取曆史使用時間戳和版本但我問裝進箱overwrtiting屋或typechanges後的數據在下麵代碼:

(spark.read.table (…)

.withColumn(“生日”,上校(“生日”).cast(“日期”))

.write

.mode(“覆蓋”)

.option (“overwriteSchema”,“真正的”)

.saveAsTable (…)

)

但我的問題會不會自動檢測並完成下麵三個案例

零值

類型的變化

刪除列

UmaMahesh1
尊敬的貢獻者三世

你能詳細說明你想做什麼特別的刪除和重命名部分?

至於查詢使用曆史和恢複舊的數據,你可以讓δ時間旅行如果你將這些數據存儲在三角洲格式。以上答案已經查詢命令。

如果你想要時間戳/版本需要恢複,您可以簡單地運行一個描述曆史< deltatable >的所有細節。

歡呼聲……

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

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

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

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

Baidu
map