繁体   English   中英

如何更新/删除 Hive 分区?

[英]How to Update/Drop a Hive Partition?

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

例如,您可以通过以下方式更新 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);

希望能帮助到你!

此外,您可以从一个语句中删除多个分区(在 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

编辑 1:

此外,您可以使用条件符号 (>,<,<>) 删除批量,例如:

Alter table t 
drop partition (PART_COL>1);
Alter table table_name drop partition (partition_name);

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

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

陈述。

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

use [dbname]

否则你可能会得到错误(即使你指定了数据库,即 dbname.table )

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM