问题描述
面对一个奇怪的问题。 Alter table
删除分区的命令对于>或 =或
工作命令:
ALTER TABLE XYZ DROP PARTITION(bizdate>'20231230');
不起作用的命令并抛出错误,指出该分区不存在:
ALTER TABLE XYZ DROP PARTITION(bizdate='20231230');
当我做show partitions
时,可以看到'20231230'分区。
注意:bizdate
是varchar(10)
解决方法
检查表中的分区列表:
SELECT nmb,nmb2,ROW_NUMBER() OVER (ORDER BY nmb2 asc) AS idx
FROM t
WHERE nmb2 IS NOT NULL
UNION
SELECT nmb,NULL
FROM t
WHERE nmb2 IS null
也许它尝试删除分区。似乎已在HDFS上的某个位置删除了数据,但配置单元表元数据仍然认为这些分区存在
SHOW PARTITIONS <table>;
&重新配对损坏的table
ALTER TABLE *tableName* drop if exists PARTITION(bizdate="20231230");