从hive外部表和HDFS目录中删除null或__HIVE_DEFAULT_PARTITION__

时间:2016-02-25 16:29:11

标签: hive hiveql external-tables bigdata

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

process_date = 20160208
process_date = __ HIVE_DEFAULT_PARTITION __

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

我试过这个

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

我收到以下错误

错误:编译语句时出错:FAILED:SemanticException(process_date = null)的意外未知分区(状态= 42000,代码= 40000)

我尝试了下面的

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

没有错误,但是hive默认分区仍在那里。

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:1)

执行此操作的方法是将分区列的类型更改为字符串,

然后此语法将起作用:

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/

答案 1 :(得分:0)

这个答案是为了帮助那些可能面临同样/类似问题的人。

以下查询应该在您遇到错误时提供帮助 - SemanticException(part_column = null)

的意外未知分区

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

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