2016-03-01 1244 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);