我們在使用hive的時候肯定遇到過建立了一張分割槽表,然後手動(比如使用 cp 或者 mv )將分割槽資料拷貝到剛剛新建的表作為資料初始化的手段;但是對於分割槽表我們需要在hive裡面手動將剛剛初始化的資料分割槽加入到hive裡面,這樣才能供我們查詢使用,我們一般會想到使用 alter table add partition 命令手動新增分割槽,但是如果初始化的分割槽太多,這樣一條一條地手動新增分割槽不免過於麻煩(雖然我們可以寫個指令碼生成新增分割槽的命令)。今天我將給大家介紹的命令可以只使用一次即可新增全部的分割槽,如下:
msck repair table table_name;
執行上面的命令後,hive會檢測hdfs目錄下存在但表的metastore中不存在的partition元資訊,然後更新到metastore中。
下面我來介紹如何使用這個命令,我新建了名為 temp.iteblog_hadoop 的表,然後手動 mv 了幾個目錄的資料到這個表資料目錄下,這幾個手動新增的目錄在hive中目前肯定無法被查詢到,所以我可以使用下面的命令來識別這些分割槽:
hive> show partitions temp.iteblog_hadoop;
oktime taken: 1.491 seconds
hive> msck repair table temp.iteblog_hadoop;
17/02/21 16:07:15 warn log: updating partition stats fast for: iteblog_hadoop
17/02/21 16:07:15 warn log: updated size to 11595
17/02/21 16:07:15 warn log: updating partition stats fast for: iteblog_hadoop
17/02/21 16:07:15 warn log: updated size to 23861
17/02/21 16:07:15 warn log: updating partition stats fast for: iteblog_hadoop
17/02/21 16:07:15 warn log: updated size to 784358
17/02/21 16:07:15 warn log: updating partition stats fast for: iteblog_hadoop
17/02/21 16:07:15 warn log: updated size to 2396891
17/02/21 16:07:15 warn log: updating partition stats fast for: iteblog_hadoop
17/02/21 16:07:15 warn log: updated size to 2234631
17/02/21 16:07:15 warn log: updating partition stats fast for: iteblog_hadoop
17/02/21 16:07:15 warn log: updated size to 36621058
17/02/21 16:07:15 warn log: updating partition stats fast for: iteblog_hadoop
17/02/21 16:07:15 warn log: updated size to 21093250
okpartitions not in metastore: iteblog_hadoop:dt=2017-02-15 iteblog_hadoop:dt=2017-02-16 iteblog_hadoop:dt=2017-02-17 iteblog_hadoop:dt=2017-02-18 iteblog_hadoop:dt=2017-02-19 iteblog_hadoop:dt=2017-02-20 iteblog_hadoop:dt=2017-02-21
repair: added partition to metastore temp.iteblog_hadoop:dt=2017-02-15
repair: added partition to metastore temp.iteblog_hadoop:dt=2017-02-16
repair: added partition to metastore temp.iteblog_hadoop:dt=2017-02-17
repair: added partition to metastore temp.iteblog_hadoop:dt=2017-02-18
repair: added partition to metastore temp.iteblog_hadoop:dt=2017-02-19
repair: added partition to metastore temp.iteblog_hadoop:dt=2017-02-20
repair: added partition to metastore temp.iteblog_hadoop:dt=2017-02-21
time taken: 0.575 seconds, fetched 8 row(s)
從上面的命令可以看出,已經將所有的分割槽加入到hive的metastore了,是不是很方便啊。
注:為了讓 msck 命令工作,分割槽的目錄名必須是 /partition_name=partition_value/結構的,否則將無法新增分割槽。這時候你必須使用add partition命令了。
使用MSCK命令修復Hive表分割槽
msck 命令也就是更新hive表的元資料。當表的分割槽命令存在,而在shell中看到不表的分割槽情況的時候,說明表的元資料沒有更新,所以通msck表的操作可以更新表的元資料。一 介紹 我們平時通常是通過alter table add partition方式增加hive的分割槽的,但有時候會通過hd...
阿里雲安騎士修復命令
系統級漏洞還得購買才能看到修復命令,會玩 1 rhsa 2016 0496 git security update important cveid cve 2016 2315 cveid cve 2016 2324 修復命令 yum update git yum update perl git 2 ...
cacti資料庫修復命令
報錯 2019年08月23日 18 30 22 pm cmdphp poller 0 error a db exec failed error 145 sql insert intocacti.syslog facilities facility select distinct facility f...