如果分区目录不存在,则聚合查询在配置单元中失败

时间:2016-05-26 09:35:05

标签: hadoop hive hadoop-partitioning

我正在使用Hiz 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.

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

1 个答案:

答案 0 :(得分:0)

在命令下运行

  

msck修复表test_tab;

然后运行您的查询