轉換為

適用於:勾選“是”磚的SQL勾選“是”磚運行時

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

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

語法

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

參數

  • table_name

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

  • 沒有統計數據

    在轉換過程中繞過統計數據收集,更快地完成轉換。台麵改造成三角洲湖後,就可以使用了優化ZORDER通過重新組織數據布局並生成統計信息。

  • 分區的

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

    請注意

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

例子

請注意

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

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

警告

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

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

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

而使用Databricks運行時,如果你想轉換要覆蓋Delta Lake事務日誌中的現有元數據,請設置SQL配置spark.databricks.delta.convert.metadataCheck.enabled為假。

撤消轉換

如果您執行過Delta Lake等操作刪除優化可以改變數據文件:

  1. 執行如下命令進行垃圾收集:

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