刪除 Delta 表格功能
重要
支持卸除 Delta 表功能和降級通訊協定版本,目前在 Databricks Runtime 14.1 和以上版本的公開預覽 中提供。
Azure Databricks 對於刪除表格功能提供有限的支援。 若要卸除數據表功能,必須執行下列動作:
- 停用使用表格功能的表格屬性。
- 從與資料表相關的數據檔中移除所有資料表功能的痕跡。
- 從事務歷史記錄中移除使用數據表功能的交易專案。
- 降低表格協定的級別。
如果支援,您應該只使用這項功能來支援與舊版 Databricks Runtime 版本、Delta Sharing 或其他 Delta Lake 讀取器或寫入器用戶端的相容性。
重要
所有 DROP FEATURE
作業都會與所有並行寫入衝突。
串流讀取在遇到更改數據表元數據的提交時會失敗。 如果您想要讓資料流程繼續,您必須加以重新啟動。 如需建議的方法,請參閱 結構化串流的生產考慮。
如何刪除 Delta 資料表功能?
若要移除 Delta 資料表功能,請執行 ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY]
命令。 請參閱 ALTER TABLE。
您必須使用 Databricks Runtime 14.1 或更新版本,且在目標 Delta 數據表上具有 MODIFY
許可權。
可以卸除哪些 Delta 數據表功能?
您可以卸除下列 Delta 資料表功能:
-
checkConstraints
. 請參閱 Azure Databricks 中的條件約束。 -
collations-preview
. 請參閱 Delta Lake的定序支援。 -
columnMapping
. 請參閱 使用 Delta Lake 欄位對應重新命名和刪除欄。 -
deletionVectors
. 請參閱什麼是刪除向量?。 -
typeWidening-preview
. 請參閱類型擴展。 -
v2Checkpoint
. 請參閱 與液體叢集數據表的相容性。
您無法移除其他 Delta 資料表功能。
啟用表格功能以淘汰舊版功能
DROP FEATURE
命令需要支援資料表功能讀取和寫入的通訊協定版本。 舊版通訊協定支援和 columnMapping
等checkConstraints
差異功能。 視數據表上啟用的其他功能而定,您可能需要升級通訊協定版本,才能卸除這些功能。
您可以使用下列命令來升級資料表讀取器和寫入器版本,這可讓您卸載資料行對應並降級通訊協定:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.minReaderVersion' = '3',
'delta.minWriterVersion' = '7'
)
如何捨棄 Delta 數據表功能?
由於 Delta 數據表功能代表讀取器和寫入器通訊協定,因此必須完全不在事務歷史記錄中,才能完整移除。 卸除功能會在兩個階段中發生,且需要在完成之前經過時間。 功能移除的詳細數據會因功能而異,但下一節提供一般概觀。
準備刪除表格功能
在第一個階段中,用戶準備卸除數據表功能。 下列說明在這個階段中會發生什麼事:
- 用戶執行
DROP FEATURE
命令。 - 特別用來啟用資料表功能的屬性,其值已設定為停用該功能。
- 控制與卸除功能相關聯行為的數據表屬性,在引進功能之前,選項會設定為預設值。
- 視需要,數據與元數據檔案會重新撰寫,以遵守更新的數據表屬性。
- 命令會完成執行,並傳回錯誤訊息,告知使用者他們必須等候 24 小時才能繼續移除功能。
先停用功能之後,您可以繼續寫入目標數據表,再完成通訊協議降級,但無法使用您要移除的數據表功能。
注意
如果您讓數據表處於這個狀態,則數據表的作業不會使用數據表功能,但通訊協定仍支持數據表功能。 在您完成最終降級步驟之前,無法理解表格功能的 Delta 客戶端將無法讀取該表格。
降級通訊協定並卸除數據表功能
若要卸除數據表功能,您必須移除與功能相關聯的所有交易歷程記錄,並降級通訊協定。
- 經過至少 24 小時之後,使用者就會使用
DROP FEATURE
子句再次執行TRUNCATE HISTORY
命令。 - 用戶端確認在指定的保留閾值內沒有任何交易使用數據表功能,然後將數據表的歷史記錄截斷到該閾值。
- 通訊協定已降級,移除表格功能。
- 如果數據表中存在的數據表功能可以由舊版通訊協定版本表示,數據表的
minReaderVersion
和minWriterVersion
會降級為支援 Delta 數據表所使用之所有剩餘功能的最低版本。
重要
執行 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY
會移除超過 24 小時的所有事務歷史記錄數據。 卸除 Delta 資料表功能之後,您無法存取資料表歷程記錄或時間移動。