5

我正在尝试从 hive 外部表和 HDFS 目录中删除null / HIVE_DEFAULT_PARTITION但我无法删除它.. 我去过其他一些关于同一问题的帖子,我尝试了那些即使它没有显示错误分区没有被删除。

进程日期=20160208进程日期
=__HIVE_DEFAULT_PARTITION__

这些是我现在表中的分区。我只想删除配置单元默认分区。(这是外部表,所以我也需要从 HDFS 中删除它)

我试过这个

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

我得到以下错误

错误:编译语句时出错:失败:SemanticException Unexpected unknown partitions for (process_date = null) (state=42000,code=40000)

我尝试了以下

ALTER TABLE table_name DROP PARTITION(process_date<'1');

没有错误,但配置单元默认分区仍然存在。

请帮我解决这个问题。

4

2 回答 2

3

这样做的方法是将分区列的类型更改为字符串,

然后这个语法将起作用:

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/ _ _

于 2019-08-23T09:36:11.150 回答
0

这个答案是为了帮助其他可能面临相同/类似问题的人。

当您遇到错误时,以下查询应该会有所帮助 - SemanticException Unexpected unknown partitions for (part_column = null)

使用“!=”(不等于)并提供支持的值/值

ALTER TABLE <table_name> DROP IF EXISTS PARTITION(report_year!='2018');
于 2018-04-04T06:45:55.270 回答