从配置单元外部表和hdfs目录中删除空分区或默认分区

kqqjbcuj  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(511)

我正在尝试从配置单元外部表和hdfs目录中删除空/hive\u默认\u分区,但无法删除它。。我已经到了其他一些关于同一问题的帖子,我尝试了这些,即使它没有显示任何错误,分区没有被删除。
处理日期=20160208
进程\u日期=\u配置单元\u默认\u分区__
这些是我表中的分区。我只想删除配置单元的默认分区(这是一个外部表,所以我也需要从hdfs中删除它)
我试过了
alter table table\u name drop if exists partition(process\u date='\u hive\u default\u partition\u');
我在犯错误
错误:编译语句时出错:失败:semanticexception意外的未知分区(process\u date=null)(state=42000,code=40000)
我试过下面的
alter table_name drop partition(进程_日期<'1');
没有错误,但配置单元默认分区仍然存在。
请帮我解决这个问题。

7ajki6be

7ajki6be1#

方法是将分区列的类型改为string,
那么这个语法将起作用:

ALTER TABLE Table_Name DROP IF EXISTS PARTITION(process_date='__HIVE_DEFAULT_PARTITION__')

然后将分区列的类型改回原来的类型。
那你看看
https://www.ericlin.me/2015/07/how-to-drop-hives-default-partition-hive_default_partition-with-int-partition-column/

kzmpq1sx

kzmpq1sx2#

这个答案是为了帮助可能面临相同/类似问题的其他人。
当您遇到错误时,下面的查询应该会有所帮助-semanticexception unexpected unknown partitions for(part\u column=null)
使用“!=”(不等于)并给出支持的值

ALTER TABLE <table_name> DROP IF EXISTS PARTITION(report_year!='2018');

相关问题