Hive分割槽修復命令MSCK介紹與使用

2021-08-13 03:20:59 字數 2721 閱讀 2871

我們在使用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...