我正在使用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.
我需要在聚合查询中具有与其他选择查询中相同的行为。这可能是蜂巢中的一个错误。任何有关此问题的解决方法提示将不胜感激。最诚挚的问候。
答案 0 :(得分:0)
在命令下运行
msck修复表test_tab;
然后运行您的查询