轉換為DELTA (Databricks SQL)

將現有的拚花表轉換為原地的Delta表。該命令列出目錄中的所有文件,創建跟蹤這些文件的Delta Lake事務日誌,並通過讀取所有Parquet文件的頁腳自動推斷數據模式。轉換過程收集統計信息以提高對轉換後的Delta表的查詢性能。如果您提供一個表名,那麼這個metastore也會被更新,以反映該表現在是一個Delta表。

這個命令支持轉換底層文件格式為Parquet的冰山表。在本例中,轉換器根據Iceberg表的本機文件清單、模式和分區信息生成Delta Lake事務日誌。

語法

轉換δtable_name沒有統計數據分區通過條款

參數

  • table_name

    要麼是選擇性的限定表標識符或者一條到a的路徑拚花冰山文件目錄。名稱中不能包含時間規範.對於冰山表,隻能使用路徑,因為不支持轉換托管的冰山表。

  • 沒有統計數據

    在轉換過程中繞過統計信息收集,更快地完成轉換。將表轉換為Delta Lake後,即可使用優化ZORDER通過重新組織數據布局並生成統計信息。

  • 分區的

    用指定的列對創建的表進行分區。如果數據是分區的,則必須。的目錄結構不符合時,轉換過程將中止並拋出異常分區通過規範。如果您沒有提供分區通過子句時,該命令假定表沒有分區。在轉換Iceberg表時不允許使用此子句,因為分區信息將直接從Iceberg元數據中獲得。

警告

任何沒有被Delta Lake跟蹤的文件都是不可見的,可以在運行時刪除真空.您應該避免在轉換過程中更新或追加數據文件。轉換表之後,確保所有寫操作都經過Delta Lake。

多個外部表可能共享相同的底層Parquet目錄。在這種情況下,如果你跑轉換,那麼您將無法訪問其他外部表,因為它們的底層目錄已從Parquet轉換為Delta Lake。要再次查詢或寫入這些外部表,必須運行轉換也在他們身上。

轉換將目錄信息(如模式和表屬性)填充到Delta Lake事務日誌中。如果底層目錄已經轉換為Delta Lake,並且它的元數據與目錄元數據不同,則aconvertMetastoreMetadataMismatchException拋出。

撤銷的轉換

如果您執行過三角洲湖操作,如刪除優化可以更改數據文件:

  1. 運行以下命令進行垃圾收集:

真空δ' <路徑--表格>”保留0小時
  1. 刪除< path-to-table > / _delta_log目錄中。