Maison >base de données >tutoriel mysql >Pourquoi ma requête Hive COUNT(*) affiche-t-elle moins de lignes que ma requête de comptage non NULL ?
Différence du nombre de requêtes Hive : le nombre de requêtes non vides est supérieur au nombre total
Dans Hive, nous avons observé un phénomène intéressant concernant le calcul du nombre de lignes. Supposons qu'il existe une table nommée mytable qui contient un champ nommé master_id. Lorsque la requête suivante est exécutée, le nombre total de lignes récupérées est de 1 129 563 :
<code class="language-sql">SELECT COUNT(*) AS c FROM mytable;</code>
Cependant, lors de la recherche du nombre de lignes avec des valeurs master_id non vides, le nombre passe à 1 134 041 :
<code class="language-sql">SELECT COUNT(*) AS c FROM mytable WHERE master_id IS NOT NULL;</code>
Cette différence se produit car, par défaut, les requêtes sans clause WHERE peuvent utiliser des statistiques pour estimer le nombre de lignes. Pour résoudre ce problème, le paramètre hive.compute.query.using.stats
peut être défini sur false pour désactiver l'estimation statistique.
Vous pouvez également calculer les statistiques de la table explicitement à l'aide de l'instruction ANALYZE TABLE
, ou définir hive.stats.autogather
sur true pour collecter des statistiques lors de l'importation groupée de données via l'opération INSERT OVERWRITE. Cela garantira des résultats de requête précis et cohérents et évitera des résultats inattendus comme celui-ci.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!