轉換為
適用於:磚的SQL磚運行時
就地將現有Parquet表轉換為Delta表。該命令列出目錄中的所有文件,創建一個Delta Lake事務日誌來跟蹤這些文件,並通過讀取所有Parquet文件的頁腳自動推斷數據模式。轉換過程收集統計信息,以提高對轉換後的Delta表的查詢性能。如果您提供一個表名,亞metastore也會被更新,以反映該表現在是一個Delta表。
此命令支持轉換底層文件格式為Parquet的冰山表。在本例中,轉換器根據Iceberg表的本機文件清單、模式和分區信息生成Delta Lake事務日誌。
參數
要麼是有選擇性的表標識符或者到a的路徑
拚花
或冰山
文件目錄。名稱中不能包含時間規範.對於冰山表,您隻能使用路徑,因為不支持轉換托管冰山表。沒有統計數據
在轉換過程中繞過統計數據收集,更快地完成轉換。台麵改造成三角洲湖後,就可以使用了
優化ZORDER通過
重新組織數據布局並生成統計信息。按指定的列對創建的表進行分區。當
table_name
是路徑,是分區通過
對於分區數據是必需的。當table_name
是一個限定的表標識符,分區通過
子句是可選的,分區規範從metastore加載。在任何一種方法中,如果目錄結構不符合所提供或加載的目錄結構,轉換過程都會中止並拋出異常分區通過
規範。請注意
在Databricks Runtime 11.1及以下版本中,
分區通過
是所有分區數據的必選參數。
例子
請注意
您不需要為注冊到metastore的Iceberg表或表提供分區信息。
轉換來δdatabase_name.table_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
為假。