修複表(Databricks SQL)

這個命令更新Delta表元數據到Unity Catalog服務。對於非delta表,它修複表的分區並更新Hive metastore。

  • 三角洲表參數運行Delta表時同步元數據參數,該命令讀取目標表的delta日誌,並將元數據信息更新到Unity Catalog服務。

    要求:SQL倉庫版本2022.30或更高版本。此版本可在預覽頻道中獲得。

  • Non-Delta表:當使用非delta表時,該命令恢複非delta表目錄下的所有分區,並更新Hive metastore。

語法

MSCK修複表格table_name添加|下降|同步分區|同步元數據

參數

  • table_name

    表的名稱。

  • 添加下降同步分區

    類創建非delta表時分區通過子句,分區被生成並注冊到Hive metastore中。但是,如果從現有數據創建分區表,分區不會自動注冊到Hive metastore中。運行MSCK修理表來注冊分區。

    恢複分區的另一種方法是使用修改表恢複分區

    如果表被緩存,該命令將清除表的緩存數據和引用它的所有依賴項。緩存將在下次訪問表或依賴項時填充。

    • 添加命令為基表文件夾中不屬於任何表分區的所有子文件夾向會話編目添加新分區。添加如果沒有指定其他選項,則為默認參數。

    • 下降命令從會話目錄中刪除文件係統中不存在位置的所有分區。

    • 同步是以下的組合下降而且添加

  • 同步元數據

    讀取目標表的delta日誌,並更新Unity Catalog服務中的元數據信息。要運行此命令,必須在目標表和父模式和目錄的USAGE上擁有MODIFY和SELECT特權。如果目標表沒有存儲在Unity Catalog中,這個帶有此參數的命令將失敗。

示例(非delta Lake表)

——從現有數據中創建一個分區表/tmp/namesAndAges.parquet>創建表格t1的名字字符串年齡INT使用拚花分區通過年齡位置“/ tmp / namesAndAges.parquet”——SELECT * FROM t1不返回結果>選擇t1——運行MSCK REPAIR TABLE恢複所有分區>MSCK修複表格t1——SELECT * FROM t1返回結果>選擇t1的名字年齡------- ---邁克爾20.賈斯汀19安迪30.

示例(Unity Catalog表)

——運行MSCK REPAIR TABLE t1 SYNC METADATA將元數據信息更新到Unity Catalog服務>MSCK修複表格t1同步元數據