轉換為δ

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

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

語法

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

參數

  • table_name

    要麼是選擇性的限定表標識符或Parquet文件的路徑。名稱中不能包含時間規範

  • 沒有統計數據

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

  • 分區的

    用指定的列對創建的表進行分區。當table_name是路徑,是分區通過對於分區數據是必需的。當table_name是一個合格的表標識符,分區通過子句是可選的,分區規範從metastore加載。在這兩種方法中,如果目錄結構不符合所提供或加載的目錄結構,轉換過程將中止並拋出異常分區通過規範。

    請注意

    在Databricks Runtime 11.1及以下版本中,分區通過是所有分區數據的必選參數。

例子

請注意

您不需要為注冊到metastore的Iceberg表或表提供分區信息。

轉換δdatabase_nametable_name——僅適用於拚花桌轉換δ拚花s3//我的-/路徑//表格分區通過日期日期);——如果表是分區的轉換δ冰山s3//我的-/路徑//表格——使用Iceberg清單作為元數據

警告

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

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

轉換將目錄信息(如模式和表屬性)填充到Delta Lake事務日誌中。如果底層目錄已經轉換為Delta Lake,並且它的元數據與目錄元數據不同,則aconvertMetastoreMetadataMismatchException拋出。如果你想要轉換若要覆蓋Delta Lake事務日誌中的現有元數據,請設置SQL配置spark.databricks.delta.convert.metadataCheck.enabled為假。

撤銷的轉換

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

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

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