1.前言
本文大部分是對於官方問的那個的理解,小部分是自己的測試感受
官方文檔地址
https://cwiki.apache.org/confluence/display/Hive/StatsDev
ANALYZE 這個命令接觸的不多,今天專門研究學習下
2、目的
見名知意,它的目的就是爲了統計和分析的作用,它將統計的信息存儲到metastore中,後續再來查詢的時候就不需要在執行查詢計算,而是直接獲取即可
3、範圍
統計信息支持新建的和現有的表,支持分區表和普通表的統計信息 以及列統計信息
4、ANALYZE相關
1、表統計
表統計的信息包括:行數,文件數,大小(以字節爲單位)
- 1、hive 是默認自動收集統計信息,由hive.stats.autogather 配置參數決定,默認是true。但是對於load data 方式是不支持的。(想一下也可以知道,他應該是在計算的時候去計算出這些統計信息)
-注意:這個在hive中是自動收集的。在sparkThriftserver中並不適用,雖然用的hive的元數據信息,但是它們兩個在這方面不相通。
- 2、手動收集。我們這邊也可以指定手動收集,手動收集的指令爲
ANALYZE TABLE [db_name.]tablename [PARTITION(partcol1[=val1], partcol2[=val2], …)]
COMPUTE STATISTICS
[FOR COLUMNS] – (Note: Hive 0.10.0 and later.)
[CACHE METADATA] – (Note: Hive 2.1.0 and later.)
[NOSCAN];
其中如果指定了NOSCAN的話,該命令將不會去掃描文件,僅會收集文件數和文件大小的信息
- 3、查看錶的統計信息
desc formatted tableName
2、列統計
相關文檔
https://cwiki.apache.org/confluence/display/Hive/Column+Statistics+in+Hive
- 1、在表信息的基礎上進行了擴展,可以對列信息進行統計,命令爲
analyze table t [partition p] compute statistics for [columns c,…];
- 2、查看列信息統計的命令爲
describe formatted [table_name] [column_name];