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