共用方式為


卸除差異數據表功能

重要

在 Databricks Runtime 14.1 和更新版本中,支援卸除 Delta 數據表功能和降級通訊協定版本

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 資料表功能:

您無法卸除其他 Delta 資料表功能

讓數據表功能卸除舊版功能

命令 DROP FEATURE 需要支持數據表功能讀取和寫入的通訊協定版本。 舊版通訊協定支援和 checkConstraintscolumnMapping差異功能。 視數據表上啟用的其他功能而定,您可能需要升級通訊協定版本,才能卸除這些功能。

您可以使用下列命令來升級資料表讀取器和寫入器版本,這可讓您卸載資料行對應並降級通訊協定:

ALTER TABLE <table-name> SET TBLPROPERTIES (
  'delta.minReaderVersion' = '3',
  'delta.minWriterVersion' = '7'
)

如何捨棄 Delta 數據表功能?

由於 Delta 數據表功能代表讀取器和寫入器通訊協定,因此必須完全不在事務歷史記錄中,才能完整移除。 卸除功能會在兩個階段中發生,且需要在完成之前經過時間。 功能移除的詳細數據會因功能而異,但下一節提供一般概觀。

準備卸除數據表功能

在第一個階段中,用戶準備卸除數據表功能。 下列說明在這個階段中會發生什麼事:

  1. 用戶執行 DROP FEATURE 命令。
  2. 特別啟用資料表功能的數據表屬性已設定為停用此功能的值。
  3. 控制與卸除功能相關聯行為的數據表屬性,在引進功能之前,選項會設定為預設值。
  4. 視需要,數據與元數據檔案會重新撰寫,以遵守更新的數據表屬性。
  5. 命令會完成執行,並傳回錯誤訊息,告知使用者他們必須等候 24 小時才能繼續移除功能。

先停用功能之後,您可以繼續寫入目標數據表,再完成通訊協議降級,但無法使用您要移除的數據表功能。

注意

如果您讓數據表處於這個狀態,則數據表的作業不會使用數據表功能,但通訊協定仍支持數據表功能。 在您完成最終降級步驟之前,Delta 用戶端無法讀取該數據表,但無法了解數據表功能。

降級通訊協定並卸除數據表功能

若要卸除數據表功能,您必須移除與功能相關聯的所有交易歷程記錄,並降級通訊協定。

  1. 經過至少 24 小時之後,使用者就會使用 TRUNCATE HISTORY 子句再次執行DROP FEATURE命令。
  2. 用戶端會確認指定的保留閾值中沒有任何交易使用數據表功能,然後將數據表歷程記錄截斷至該交易。
  3. 已降級通訊協定,卸除數據表功能。
  4. 如果數據表中存在的數據表功能可以由舊版通訊協定版本表示, minReaderVersion 而 數據表的 和 minWriterVersion 會降級為支援 Delta 數據表所使用之所有剩餘功能的最低版本。

重要

執行 ALTER TABLE <table-name> DROP FEATURE <feature-name> TRUNCATE HISTORY 會移除超過 24 小時的所有事務歷史記錄數據。 卸除 Delta 資料表功能之後,您無法存取資料表歷程記錄或時間移動。

請參閱 Azure Databricks 如何管理 Delta Lake 功能相容性?