假设我有一个分区的hive表
>show partitions db.my_table;
+----------------------------------+
| partition |
+----------------------------------+
| in_date=20-09-2020 |
| in_date=21-09-2020 |
| in_date=22-09-2020 |
+----------------------------------+
如果我手动删除HDFS的分区目录
$hadoop fs -rm -r 'path/to/table/in_date=20-09-2020';
但是不要从hive表中删除分区
它会导致任何实际问题(除了在表元数据中有孤立的分区名称)吗?
我已验证的内容
hive表查询工作良好(外部和内部表)
>select * from db.my_table; --works fine
>show partitions db.my_table --shows orphaned partitions,not a real problem
编辑:聚合函数查询如COUNT(),MAX()等失败错误
输入路径不存在:路径//表/in_date = 20-09-2020
有谁知道这是否会导致其他问题/破坏其他应用程序?
在Tez上导致FileNotFound异常,因为分区元数据存在并且文件夹不存在。删除分区:ALTER TABLE DROP PARTITION(in_date='20-09-2020')
TLDR:它将破坏应用程序,因为元数据将指示分区存在,这是假的。
长答:是的。如果你讨厌自己,就去做吧。基本上,HDFS上任何引用metastore的应用程序都会找到分区,然后尝试在其上进行任何活动。当它尝试这样做时,HDFS会爆炸,因为它找不到目录。所以即使你成功了,你也会失败(不,你不会是这里的"Baazigar")。