在Hive中将分区添加到外部表后,如何更新/删除它?
问问题
278429 次
5 回答
179
您可以通过以下方式更新 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);
希望能帮助到你!
于 2012-12-18T02:59:30.363 回答
19
此外,您可以从一个语句中删除多个分区(在 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);
于 2019-05-12T12:30:10.623 回答
6
Alter table table_name drop partition (partition_name);
于 2020-05-14T19:27:34.337 回答
2
您可以将文件复制到外部分区所在的文件夹中,也可以使用
INSERT OVERWRITE TABLE tablename1 PARTITION (partcol1=val1, partcol2=val2...)...
陈述。
于 2012-12-11T21:01:32.960 回答
2
您可能还需要使包含表的数据库处于活动状态
use [dbname]
否则你可能会得到错误(即使你指定数据库,即 dbname.table )
FAILED 执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask 返回代码 1。无法更改分区。无法更改分区,因为表或数据库不存在。
于 2019-11-19T15:13:20.007 回答