旧版本的 Hive 重命名分区时出现问题。对于您的案例来说,这也可能是一个问题。请看这个link https://community.hortonworks.com/questions/8377/how-to-rename-partition-value-in-hive.html详细信息。
如果您使用的是旧版本的 Hive,则在执行重命名分区命令之前,您需要设置以下两个属性。
set fs.hdfs.impl.disable.cache=false;
set fs.file.impl.disable.cache=false;
现在通过设置此属性来运行查询。
hive> set fs.hdfs.impl.disable.cache=false;
hive> set fs.file.impl.disable.cache=false;
hive> ALTER TABLE partition_test PARTITION (year='2016',day='1') RENAME TO PARTITION (year='2016',day='01');
OK
Time taken: 0.28 seconds
hive> show partitions partition_test;
OK
year=2016/day=01
Time taken: 0.091 seconds, Fetched: 1 row(s)
hive>
该问题已在 Hive 最新版本中修复。在我的例子中,Hive 版本是 1.2.1 并且它可以工作,无需设置该属性。请看下面的例子。
创建分区表。
hive> create table partition_test(
> name string,
> age int)
> partitioned by (year string, day string);
OK
Time taken: 5.35 seconds
hive>
现在添加分区并检查新添加的分区。
hive> alter table partition_test ADD PARTITION (year='2016', day='1');
OK
Time taken: 0.137 seconds
hive>
hive> show partitions partition_test;
OK
year=2016/day=1
Time taken: 0.169 seconds, Fetched: 1 row(s)
hive>
使用重命名分区RENAME TO PARTITION
命令并检查它。
hive> ALTER TABLE partition_test PARTITION (year='2016',day='1') RENAME TO PARTITION (year='2016',day='01');
OK
Time taken: 0.28 seconds
hive> show partitions partition_test;
OK
year=2016/day=01
Time taken: 0.091 seconds, Fetched: 1 row(s)
hive>
希望对您有帮助。