如果分区列名称不正确,Hive会删除所有分区

时间:2015-08-19 10:38:38

标签: hadoop hive hiveql hadoop-partitioning

我正面临着一个奇怪的问题, 我有一个表,基于dept_key进行分区(它是一个整数,例如.3212) 表创建如下

create external table dept_details (dept_key,dept_name,dept_location) PARTITIONED BY (dept_key_partition INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '~' LOCATION '/dept_details/dept/';

现在我已经添加了一些分区,例如:1204,1203,1204 当我尝试删除分区时,我只是输入了dept_key而不是"dept_key_partition",这又丢弃了我的所有分区 删除查询alter table dept_details drop partition (dept_key=12),这是我面临的一个非常奇怪的问题。请让我知道可能存在的问题。 谢谢。

1 个答案:

答案 0 :(得分:0)

来自Hive LanguageManual DDL ...

  

从Hive 0.14(HIVE-8411)开始,用户可以提供部分   某些上述alter column语句的分区规范,类似于   动态分区(...)您可以使用单个ALTER语句一次更改许多现有分区 (...)与动态分区类似,hive.exec.dynamic.partition必须设置为true

看起来部分规范功能已被移植到其他命令,如DROP,TRUNCATE,即使文档中没有明确说明。

简而言之:它不是一个错误,它是一个功能。