Unterschied bei der Anzahl der Hive-Abfragen: Die Anzahl der nicht leeren Personen ist größer als die Gesamtanzahl
In Hive haben wir ein interessantes Phänomen bei der Berechnung der Zeilenanzahl beobachtet. Angenommen, es gibt eine Tabelle namens mytable, die ein Feld namens master_id enthält. Wenn die folgende Abfrage ausgeführt wird, beträgt die Gesamtzahl der abgerufenen Zeilen 1.129.563:
<code class="language-sql">SELECT COUNT(*) AS c FROM mytable;</code>
Bei der Abfrage der Anzahl der Zeilen mit nicht leeren master_id-Werten erhöht sich die Anzahl jedoch auf 1.134.041:
<code class="language-sql">SELECT COUNT(*) AS c FROM mytable WHERE master_id IS NOT NULL;</code>
Dieser Unterschied tritt auf, weil Abfragen ohne WHERE-Klausel standardmäßig Statistiken verwenden können, um die Anzahl der Zeilen zu schätzen. Um dieses Problem zu lösen, kann der Parameter hive.compute.query.using.stats
auf „false“ gesetzt werden, um die statistische Schätzung zu deaktivieren.
Alternativ können Sie Tabellenstatistiken explizit mit der ANALYZE TABLE
-Anweisung berechnen oder hive.stats.autogather
auf „true“ setzen, um beim Massenimport von Daten über die INSERT OVERWRITE-Operation Statistiken zu sammeln. Dadurch werden genaue und konsistente Abfrageergebnisse sichergestellt und unerwartete Ergebnisse wie diese vermieden.
Das obige ist der detaillierte Inhalt vonWarum zeigt meine Hive COUNT(*)-Abfrage weniger Zeilen an als meine Nicht-NULL-Zählungsabfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!