如果你想從你的數據然後重命名列可以使用函數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 (…)
)
但我的問題會不會自動檢測並完成下麵三個案例
零值
類型的變化
刪除列