繁体   English   中英

在Impala / Hive中删除多个分区

[英]Dropping multiple partitions in Impala/Hive

1-我正在尝试一次删除多个分区,但是很难用Impala或Hive做到这一点。 我尝试了以下查询,使用和不使用'

ALTER TABLE cz_prd_corrti_st.s1mme_transstats_info DROP IF EXISTS PARTITION (pr_load_time='20170701000317') PARTITION (pr_load_time='20170701000831')

我收到的错误如下:

AnalysisException:第3行中的语法错误:PARTITION(pr_load_time ='20170701000831')^遇到:PARTITION预期的:CACHED,LOCATION,PURGE,SET,UNCACHED原因:异常:语法错误

分区列为bigint类型,查询仅删除一个分区即可正常工作:

ALTER TABLE cz_prd_corrti_st.s1mme_transstats_info DROP IF EXISTS
PARTITION   (pr_load_time='20170701000317')

2-是一种好习惯,首先删除hdfs数据,然后将分区放在Impala / Hive中,还是应该反之?

1。

您的语法错误。
在DROP命令中,分区应以逗号分隔。

演示版

hive> create table t (i int) partitioned by (p int);
OK

hive> alter table t add partition (p=1) partition(p=2) partition(p=3) partition(p=4) partition(p=5);
OK

hive> show partitions t;
OK
partition
p=1
p=2
p=3
p=4
p=5

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

hive> show partitions t;
OK
partition
p=4
p=5

2。

您可以删除范围。

演示版

hive> create table t (i int) partitioned by (p int);
OK

hive> alter table t add partition (p=1) partition(p=2) partition(p=3) partition(p=4) partition(p=5);
OK

hive> show partitions t;
OK
partition
p=1
p=2
p=3
p=4
p=5

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

hive> show partitions t;
OK
partition
p=4
p=5

暂无
暂无

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

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