修理表

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

這個命令更新三角洲表元數據統一目錄服務。non-Delta表,維修表的分區和蜂巢metastore更新。

  • 三角洲表:當執行與δ表使用同步元數據論點,這個命令讀取的δ日誌目標表並更新元數據信息統一目錄服務。

  • Non-Delta表:執行與non-Delta表時,這個命令恢複目錄中的所有分區的蜂巢metastore non-Delta表和更新。

語法

(MSCK]修複table_name{({添加|下降|同步}分區]|同步元數據}

檢查標記是的磚運行時12.1及以後MSCK是可選的。

參數

  • table_name

    表的名稱。如果表不能發現磚了TABLE_OR_VIEW_NOT_FOUND錯誤。

  • 添加下降同步分區

    適用於:檢查標記是的磚的SQL檢查標記是的磚運行時10.0及以上

    當創建一個non-Delta表使用分區通過條款,分區生成並在蜂巢metastore注冊。然而,如果你從現有數據,創建分區表的分區在蜂巢metastore不會自動注冊。運行MSCK修理表注冊的分區。

    另一種方法是使用恢複分區ALTER TABLE恢複分區

    如果緩存表,這個命令清除表的緩存數據和所有引用它的家屬。緩存填充下次訪問表或家屬。

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

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

    • 同步的結合下降添加

  • 同步元數據

    讀取的δ日誌目標表和更新的元數據信息統一目錄服務。運行這個命令,您必須修改和選擇目標表上的特權和使用父母的模式和目錄。這個命令,這種觀點將會失敗如果沒有存儲在統一目標表目錄。

例子(non-Delta湖表)

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

示例(統一目錄表)

——運行MSCK修理表t1同步元數據更新元數據信息統一目錄服務>MSCK修複t1同步元數據