我正在尝试从 Hive 外部表和 HDFS 目录中删除 null/HIVE_DEFAULT_PARTITION,但我无法删除它.. 我去过关于同一问题的其他一些帖子,即使它没有显示任何分区未被删除的错误,我也尝试了这些帖子。
process_date=20160208
process_date=__HIVE_DEFAULT_PARTITION__
这些是我现在表中的分区。 我只想删除 Hive 默认分区。 (这是外部表,所以我也需要从HDFS中删除相同的表)
我试过这个
如果存在分区,则更改表Table_Name删除(process_date='__HIVE_DEFAULT_PARTITION__');
我得到以下错误
错误:编译语句时出错:失败:语义异常 (process_date = null) 的意外未知分区(状态 = 42000,代码 = 40000)
我尝试了以下
更改表table_name删除分区(process_date<'1');
没有错误,但 Hive 默认分区仍然存在。
请帮助我解决问题。
方法是将分区列的类型更改为字符串,
然后,此语法将起作用:
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/
这个答案是为了帮助可能面临相同/类似问题的其他人。
当您遇到错误时,以下查询应该会有所帮助 - 语义异常 (part_column = null) 的意外未知分区
使用"!="(不等于)并给出支持的值/值
ALTER TABLE <table_name> DROP IF EXISTS PARTITION(report_year!='2018');