Hive中count(1)結果為0的原因


        執行count(1)或count(*)統計行數時,默認會從Hive的元數據庫中查詢 rowsNum 對應值作為結果返回。但是如果是使用加載數據文件load data的方式填充表數據,則hive元數據不會收集此統計信息,那么count時就會為0。

       也就是說通過insert的方式寫入數據的表會更新hive元數據的rowsNum信息;通過load、put等方式寫入數據的表不會更新hive的元數據rowsNum信息。  Hive收集的統計信息與收集時機見官方文檔

解決辦法:

1、使用analyze命令手動更新表統計信息,如:

analyze table ods_crm_user compute statistics;

2、對於類似於count(1)的基礎查詢不使用元數據中的統計信息,而是執行Job,即設置參數值為false

set hive.compute.query.using.stats=false;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM