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



我正在尝试从 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');

相关内容

  • 没有找到相关文章

最新更新