hive3删除分区时显示未找到该分区

Hive3删除分区时显示未找到该分区

问题描述:在执行"alter table student_tmp drop partition(p_date_sttc=20191001);"命令时报错!!

1.错误描述

Error: Error while compiling statement: FAILED: SemanticException [Error 10006]: Partition not found (p_date_sttc = '20191001') (state=42000,code=10006)

2.问题分析

1.查询语法。 ——没问题!
2.查询是否存在该分区。 ——分区存在!!

0: jdbc:hive2:***************> show partitions student_tmp;
INFO  : Compiling command(queryId=hive_20191104191952_4def8e20-c8fd-443b-b76d-adf6db94dd80): show partitions student_tmp
INFO  : Semantic Analysis Completed (retrial = false)
INFO  : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:partition, type:string, comment:from deserializer)], properties:null)
INFO  : Completed compiling command(queryId=hive_20191104191952_4def8e20-c8fd-443b-b76d-adf6db94dd80); Time taken: 0.115 seconds
INFO  : Executing command(queryId=hive_20191104191952_4def8e20-c8fd-443b-b76d-adf6db94dd80): show partitions student_tmp
INFO  : Starting task [Stage-0:DDL] in serial mode
INFO  : Completed executing command(queryId=hive_20191104191952_4def8e20-c8fd-443b-b76d-adf6db94dd80); Time taken: 0.094 seconds
INFO  : OK
+-----------------------+
|       partition       |
+-----------------------+
| p_date_sttc=20191001  |
+-----------------------+

3.查看表结构。

0: jdbc:hive2:***************>  show create table student_tmp;
......
......
......
+----------------------------------------------------+
|                   createtab_stmt                   |
+----------------------------------------------------+
| CREATE TABLE `student_tmp`(                        |
|   `student_id` varchar(10) COMMENT '??',           |
|   `subject` varchar(30) COMMENT '??',              |
|   `score` decimal(5,1) COMMENT '??',               |
|   `es_date` varchar(10) COMMENT '??????')          |
| COMMENT '?????'                                    |
| PARTITIONED BY (                                   |
|   `p_date_sttc` varchar(8))                        |
| ROW FORMAT SERDE                                   |
|   'org.apache.hadoop.hive.ql.io.orc.OrcSerde'      |
| WITH SERDEPROPERTIES (                             |
|   'field.delim'='|',                               |
|   'serialization.format'='|')                      |
| STORED AS INPUTFORMAT                              |
|   'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'  |
| OUTPUTFORMAT                                       |
|   'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' |
| LOCATION                                           |
|   'hdfs://******/warehouse/tablespace/managed/hive/student_tmp' |
| TBLPROPERTIES (                                    |
|   'bucketing_version'='2',                         |
|   'transactional'='true',                          |
|   'transactional_properties'='default',            |
|   'transient_lastDdlTime'='1572866338')            |
+----------------------------------------------------+

分析整个建表语句貌似没什么问题。
然而,此时有一位大佬经过,瞄了一眼,说了一句:“这个分区的字段类型看着有点奇怪…”
于是呼,事不宜迟,即刻对分区类型进行了更改
varchar(8) => string/char(8) !!!
紧接着一系列操作:删表=>更改类型后建表=>添加分区=>删除分区

此时,当我执行文章开头的那句命令时,奇迹发生了该分区被顺利删除!!!

0: jdbc:hive2:***************> show partitions student_tmp;
......
+-----------------------+
|       partition       |
+-----------------------+
| p_date_sttc=20191001  |
+-----------------------+
1 row selected (0.254 seconds)
0: jdbc:hive2:***************> alter table student_tmp drop partition(p_date_sttc=20191001);
......
Time taken: 0.202 seconds
INFO  : OK
No rows affected (0.439 seconds)
0: jdbc:hive2:***************> show partitions student_tmp;
......
+------------+
| partition  |
+------------+
+------------+
No rows selected (0.241 seconds)

3.解决问题

在建立分区表时,注意分区字段的类型 !!!
在此hive版本下,用string/char代替varchar !!!
varchar也可以顺利添加分区,但是无法删除。
注:貌似只有varchar不行!!

后记

当前hive版本为:Hive 3.1.0.3.0.0.0-1634

$ hive --version
......
Hive 3.1.0.3.0.0.0-1634
Git git://ctr-e138-1518143905142-366319-01-000006.hwx.site/grid/0/jenkins/workspace/HDP-parallel-centos7/SOURCES/hive -r c5901f2263fbf508054b809d5e2b510c101c8504
Compiled by jenkins on Thu Jul 12 20:32:02 UTC 2018
From source with checksum 01d623de41911f0d1cfb36b6b44ccfd2
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值