如果分区目录不存在,则 hive 中的聚合查询失败



我正在使用 Hive v1.2.1 和 Tez。我有一个外部分区表。分区是每小时一次的,形式为 p=yyyy_mm_dd_hh。情况是hdfs中的这些分区目录可能会在某个时候被删除。删除它们后,hive 仍然包含该分区的元数据,并且命令"show partitions"仍将列出其目录已从 hdfs 中删除的分区。通常,这不太可能导致任何问题,并且对分区(其目录已删除)的选择查询只会产生一个空的结果集:

hive> select * from test_tab where p='2015_01_01_01';
OK
Time taken: 2.168 seconds

但是,在对同一分区运行任何聚合查询时,我收到错误:

hive> select count(*) from test_tab where p='2015_01_01_01';
FAILED: SemanticException java.io.FileNotFoundException: File hdfs://localhost:8020/user/root/data/test_db/test_tab/p=2015_01_01_01 does not exist.

我需要在聚合查询中具有与其他选择查询中相同的行为。这可能是蜂巢中的一个错误。此问题的任何解决方法提示将不胜感激。此致敬意。

运行以下命令

MSCK维修表test_tab;

,然后运行查询

最新更新