J'utilise Hive v1.2.1 avec Tez. J'ai une table partitionnée externe. Les partitions sont toutes les heures et de la forme p = aaaa_mm_dd_hh. La situation est que ces répertoires de partition dans hdfs sont susceptibles d'être supprimés parfois. Après leur suppression, hive contient toujours les métadonnées pour cette partition, et une commande 'show partitions' liste toujours la partition dont le répertoire a été supprimé de hdfs. Normalement, cela ne devrait pas causer de problème, et une requête de sélection pour la partition (dont le répertoire a été supprimé) serait simplement résulter d'un resultset vide:Les requêtes agrégées échouent dans la ruche si le répertoire de partition n'existe pas
hive> select * from test_tab where p='2015_01_01_01';
OK
Time taken: 2.168 seconds
Cependant, sur l'exécution de toute requête globale contre la même partition, Je reçois une erreur:
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.
J'ai besoin d'avoir le même comportement dans les requêtes agrégées que dans d'autres requêtes select. C'est probablement un bug dans la ruche. Toute solution de contournement pour ce problème serait appréciée. Meilleures salutations.
J'encountred ce comportement lorsque vous travaillez avec HCAT et je pense que ce ne est pas un bug, car dans le comportement normal, l'utilisateur doivent déposer des partitions avant supprimer leurs dossiers. – 54l3d
_Hive s'en fiche si un répertoire de partition n'existe pas pour une partition ou s'il ne contient aucun fichier. Dans les deux cas, vous n'obtiendrez aucun résultat pour une requête qui filtre pour la partition_ - Cité dans Programming Hive: [lien] (https://www.safaribooksonline.com/library/view/programming-hive/9781449326944/ch04 .html). Si Hive n'est pas censé se soucier si le répertoire de partition existe, pourquoi l'erreur dans la requête agg? Cela me fait penser que c'est un bug –