2016-03-01 85 views
0

我在配置單元中面臨配置單元默認分區(空分區)的問題。 我會在這裏簡單地解釋一下情況..我有一個蜂房主表,每天都會發生數據攝入。但不知何故,當數據被攝入到蜂巢表中時,出現了問題,分區顯示_hive_default_partition_或在我的理解中是空分區。Hive分區 - 如何刪除null或hive_default_partition

我需要從配置元表中刪除該分區。 (這是外部表)...

我使用的蜂巢1.1版本和CDH版本5.4.8 ..

我想下面的語法和它的工作不適合我。

alter table "tablename" drop partition(partn='_hive_default_partition_); 

alter table "tablename" drop partition(partn<'1'); 

alter table "tablename" drop partition(partn = 1); 

alter table "tablename" drop partition(partn='0'); 

我嘗試了上述所有步驟,沒有任何工作..

希望有人可以幫助我這個。

由於提前,

回答

-1

只是刪除HDFS的目錄並運行MSCK修表。

從外殼:hadoop fs -rm -r ..../partn=__HIVE_DEFAULT_PARTITION__

從蜂巢外殼:msck repair table table_name;

+0

這只是如果你的分區列的數據類型爲字符串已經作品。 – kfkhalili

+0

是的,你是對的。新注意到表是外部的。我相應地調整了我的答案。 – HakkiBuyukcengiz

0

這對我來說是改變分區列的數據類型,刪除分區和更改回的工作方式。

考慮到你在問題中將分區與int進行比較,我認爲這是列數據類型的開始,但是無論開始的數據類型如何,這都應該可以工作。

-- Change the column type to string ALTER TABLE tablename PARTITION COLUMN (partn STRING);

-- Drop the offending partitions ALTER TABLE tablename DROP PARTITION (partn='__HIVE_DEFAULT_PARTITION__');

-- Change the column type back to int ALTER TABLE tablename PARTITION COLUMN (partn INT);