2014-01-14 33 views
6

自動更新Hive分區表的元數據的方法是什麼?如何在HDFS中手動刪除分區數據時更新Hive中的分區元數據

如果新的分區數據被添加到HDFS(沒有alter table add分區命令執行)。那麼我們可以通過執行命令'msck repair'來同步元數據。

如果從HDFS中刪除大量分區數據(不執行alter table drop分區commad執行),應該做些什麼。

什麼是合成Hive元數據的方式?

回答

9

嘗試使用

MSCK REPAIR TABLE <tablename>; 
+0

像魅力一樣工作 –

+7

Msck不會刪除目錄在文件系統中不存在的分區。它只會通知哪些分區的目錄在文件系統中不存在。你應該手動運行「alter table drop partition ..」 – HakkiBuyukcengiz

4

正如HakkiBuyukcengiz正確地指出,如果MSCK REPAIR手動刪除HDFS上相應的文件夾不會刪除分區,它只會增加分區是否有新的文件夾創建。從官方documentation

提取物:

換句話說,它將在metastore加上HDFS存在的任何分區,但不能給metastore。

這是我通常在external表中存在做,如果多個分區的文件夾被手動刪除HDFS上,我想快速刷新分區:

  • 刪除表(DROP TABLE table_name) (滴加外部表不會刪除基礎分區文件)
  • 重新創建表(CREATE EXTERNAL TABLE table_name ...
  • 修復它(MSCK REPAIR TABLE table_name

根據分區的數量,這可能需要很長時間。另一種解決方案是爲每個已刪除的分區文件夾使用ALTER TABLE DROP PARTITION (...),但如果刪除了多個分區,則這可能非常乏味。

相關問題