首頁 > 資料庫 > mysql教程 > 為什麼我的 Hive COUNT(*) 查詢顯示的行數比非空計數查詢少?

為什麼我的 Hive COUNT(*) 查詢顯示的行數比非空計數查詢少?

Patricia Arquette
發布: 2025-01-12 07:16:41
原創
178 人瀏覽過

Why Does My Hive COUNT(*) Query Show Fewer Rows Than My Non-NULL Count Query?

Hive 查詢計數差異:非空計數大於總計數

在 Hive 中,我們觀察到一個關於行計數計算的有趣現象。假設有一個名為 mytable 的表,其中包含一個名為 master_id 的欄位。執行以下查詢時,檢索到的總行數為 1,129,563:

<code class="language-sql">SELECT COUNT(*) AS c FROM mytable;</code>
登入後複製

但是,當查詢非空 master_id 值的行數時,計數增加到 1,134,041:

<code class="language-sql">SELECT COUNT(*) AS c FROM mytable WHERE master_id IS NOT NULL;</code>
登入後複製

這種差異出現的原因是,預設情況下,不帶 WHERE 子句的查詢可能會使用統計資訊來估計行數。若要解決此問題,可以將參數 hive.compute.query.using.stats 設為 false 以停用統計估計。

或者,可以使用 ANALYZE TABLE 語句明確計算表統計信息,或者將 hive.stats.autogather 設為 true,以便在通過 INSERT OVERWRITE 操作批量導入數據時收集統計信息。這將確保查詢結果準確一致,避免類似這種情況的意外結果。

以上是為什麼我的 Hive COUNT(*) 查詢顯示的行數比非空計數查詢少?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板