共用方式為


移除 Delta table 功能

重要

支援卸除 Delta table 功能和降級通訊協定版本,在 Databricks Runtime 14.1 及以上版本的公開預覽 中提供。

Azure Databricks 為卸除 table 功能提供有限的支援。 若要卸除 table 功能,必須發生下列情況:

  • 停用使用 table 功能的 table 屬性。
  • 從備份 table的數據檔 Removetable 功能的所有追蹤。
  • Remove 交易日誌中使用 table 功能的交易項目。
  • 降級 table 通訊協定。

Where 支援,您應該只使用這項功能來支援與舊版 Databricks Runtime 版本、Delta Sharing 或其他 Delta Lake 讀取器或寫入器用戶端的相容性。

重要

所有 DROP FEATURE 作業都會與所有並行寫入衝突。

串流讀取在遇到變更 table 元數據的提交時會失敗。 如果您想要讓資料流程繼續,您必須加以重新啟動。 如需建議的方法,請參閱 結構化串流的生產考慮。

如何刪除 Delta table 功能?

若要使用 remove Delta table 功能,請執行 ALTER TABLE <table-name> DROP FEATURE <feature-name> [TRUNCATE HISTORY] 命令。 請參閱 ALTER TABLE

您必須使用 Databricks Runtime 14.1 或更新版本,且在目標 Delta table上具有 MODIFY 許可權。

可以卸除哪些 Delta table 功能?

您可以卸除下列 Delta table 功能:

您無法卸除其他 Delta table功能。

啟用 table 功能以卸除舊版功能

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

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

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

如何移除 Delta table 功能?

由於 Delta table 特徵代表讀取器和寫入器協議,因此它們必須完全不存在於交易日誌中才能徹底移除。 卸除功能會在兩個階段中發生,且需要在完成之前經過時間。 功能移除的詳細數據會因功能而異,但下一節提供一般概觀。

準備移除 table 功能

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

  1. 用戶執行 DROP FEATURE 命令。
  2. 啟用 table 功能的 Table 屬性具有 valuesset 以停用該功能。
  3. Table 屬性可控制與被移除功能相關聯的行為。在該功能引入之前,這些屬性的 set 預設為 values。
  4. 視需要重寫數據和元數據檔案,以遵守更新 table 屬性。
  5. 命令會完成執行,並傳回錯誤訊息,告知使用者他們必須等候 24 小時才能繼續移除功能。

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

注意

如果您將 table 保留在此狀態,則針對 table 的作業不會使用 table 功能,但協議仍支援 table 功能。 在您完成最終降級步驟之前,不支援 table 功能的 Delta 用戶端將無法讀取 table。

降級通訊協定並卸除 table 功能

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

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

重要

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

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