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

標識列定義使用另存為表丟了

lizou
因素二世

我發現了一個問題:

定義為一個表和一個標識列。

重命名表列時,使用這種方法,身份定義將被刪除。

這意味著使用一個標識列在一個表中需要額外的注意檢查標識列是否還在,和當前的種子值。

代碼示例

spark.read.table \ (…)

.withColumnRenamed (“dateOfBirth”、“生日”)\

.write \

.format \(“δ”)

.mode \(“覆蓋”)

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

.saveAsTable (…)

https://docs.www.eheci.com/delta/delta-batch.html explicit-schema-update

一個表包含一個標識列的示例

創建表table_with_identity_col (

RowKey bigint not null生成默認為身份(從1增加1)評論“身份”,

用戶名的字符串

使用δ);

1接受解決方案

接受的解決方案

Hubert_Dudek1
尊敬的貢獻者三世

@lizou、身份id存儲在模式和使用overwriteSchema肯定會殺死它;(

在原帖子查看解決方案

4回複4

Hubert_Dudek1
尊敬的貢獻者三世

@lizou、身份id存儲在模式和使用overwriteSchema肯定會殺死它;(

Kaniz
社區經理
社區經理

嗨@lizou,隻是一個友好的後續。你還需要幫助,還是@Hubert杜德克(客戶)的反應幫助你找到解決方案了嗎?請讓我們知道。

VartikaNain
主持人
主持人

嘿@lizou

希望一切都好!隻是想檢查如果你能解決你的問題,你會很高興分享解決方案或答案標記為最佳?其他的請讓我們知道如果你需要更多的幫助。

我們很想聽到你的聲音。

謝謝!

lizou
因素二世

盡量避免重載表,我發現我們可以升級表版本,並使用命令重命名列

ALTER TABLE test_id2 TBLPROPERTIES (

“delta.columnMapping。模式”=“名稱”,

“三角洲。minReaderVersion ' = ' 2 ',

“三角洲。minWriterVersion ' = ' 6 ')

ALTER TABLE test_id2 a1重命名列;

最後一個問題看起來沒有辦法避免重新創建表如果我們需要改變分區。改變分區需要重置標識列,生成總是選擇,這不是理想如果列是一個關鍵維度和被引用其他表。

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

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

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

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

Baidu
map