Hive中使用count(1)或count()統計行數時結果爲0的原因

前言

  • Hive:2.3.0
  • Hadoop:2.7.7
  • JDK:1.8.0_221

原因

因爲執行count(1)或count(*)統計行數時,默認會從Hive的元數據庫中查詢 rowsNum 對應值作爲結果返回,一般情況下,如果是使用加載數據文件load data的方式填充表數據,則不會收集此統計信息,Hive收集的統計信息與收集時機見官方文檔


解決方案:

方案一:

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

ANALYZE TABLE Table1 COMPUTE STATISTICS;

方案二:

對於類似於“count(1)”的基礎查詢不使用元數據中的統計信息,而是執行MR Job,即設置參數hive.compute.query.using.stats值爲false

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章