分区仍然显示在配置单中,即使它们被丢弃用于外部表

时间:2017-04-20 17:08:00

标签: hadoop hive hiveql impala

我在hive中有一个按年,月,日划分的外部表。所以我删除了一个分区,但我仍然在show partitions中看到它。

>use test_raw_tables;
>show partitions test1_raw;
[year=2016/month=01/day=01]
[year=2017/month=03/day=24]

> alter table test1_raw drop partition (year=2016, month=01, day=01);
> refresh test1_raw;
> show partitions test1_raw;
[year=2016/month=01/day=01]
[year=2017/month=03/day=24]     ---Still see the dropped partition here----

> msck repair table test1_raw;
> show partitions test1_raw;
[year=2016/month=01/day=01]
[year=2017/month=03/day=24]    ---Still see the dropped partition here----

从带有hive作为引擎的impala运行。

  

描述test1_raw   col_name,data_type,comment(' amount_hold',' int','')(' id',' int' ;,'')(' transaction_id','字符串','')(' recipient_id',& #39;字符串','')('年','字符串','')(' month',' string','')(' day',' string','' )('',无,无)('#分区信息',无,无)('#col_name',' data_type&# 39;,'评论')('',无,无)('年','字符串',' ')(' month',' string','')(' day',' string' ;,'')   location' hdfs:// localhost / sys / datalake / testing / test1_raw'

这是什么问题? 删除后,该分区将删除hdfs中的数据。无法弄清楚这个问题。

1 个答案:

答案 0 :(得分:0)

在表格中,定义列年,月和日是字符串格式。 请尝试使用' 2016',' 01'和' 01'。 我使用下面的代码,它的工作原理。

alter table test1_raw drop partition (year='2016', month='01', day='01');