如何更新/删除Hive分区?

时间:2012-12-11 07:00:21

标签: hive hiveql

将分区添加到 Hive 中的外部表格后,如何更新/删除它?

5 个答案:

答案 0 :(得分:126)

您可以通过以下方式更新Hive分区:

ALTER TABLE logs PARTITION(year = 2012, month = 12, day = 18) 
SET LOCATION 'hdfs://user/darcy/logs/2012/12/18';

此命令不会移动旧数据,也不会删除旧数据。它只是将分区设置为新位置。

要删除分区,您可以执行

ALTER TABLE logs DROP IF EXISTS PARTITION(year = 2012, month = 12, day = 18);

希望它有所帮助!

答案 1 :(得分:2)

Alter table table_name drop partition (partition_name);

答案 2 :(得分:1)

您可以将文件复制到外部分区所在的文件夹中,也可以使用

INSERT OVERWRITE TABLE tablename1 PARTITION (partcol1=val1, partcol2=val2...)...

语句。

答案 3 :(得分:0)

此外,您可以从一个语句(Dropping multiple partitions in Impala/Hive)中删除多个分区。

从以上链接中提取:

hive> alter table t drop if exists partition (p=1),partition (p=2),partition(p=3);
Dropped the partition p=1
Dropped the partition p=2
Dropped the partition p=3
OK

答案 4 :(得分:0)

您可能还需要使包含表的数据库处于活动状态

use [dbname]

否则,您可能会出错(即使您指定数据库即dbname.table)

  

FAILED执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。无法更改分区。由于表或数据库不存在,因此无法更改分区。