我正在尝试从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默认分区仍在那里。
请帮我解决这个问题。
答案 0 :(得分:1)
执行此操作的方法是将分区列的类型更改为字符串,
然后此语法将起作用:
ALTER TABLE Table_Name DROP IF EXISTS PARTITION(process_date='__HIVE_DEFAULT_PARTITION__')
然后将分区列的类型改回原始列。
然后 参见
答案 1 :(得分:0)
这个答案是为了帮助那些可能面临同样/类似问题的人。
以下查询应该在您遇到错误时提供帮助 - SemanticException(part_column = null)
的意外未知分区使用'!=' (不等于)并提供支持的值/值
ALTER TABLE <table_name> DROP IF EXISTS PARTITION(report_year!='2018');