impala能夠經過訪問數據的統計信息對複雜和多表的查詢作更好的優化,impala使用這些信息幫助一個work進行並行和分佈式查詢。數據庫
Impala查詢計劃器能夠使用有關整個表和分區的統計信息。 此信息包括物理特性,例如行數,數據文件數,數據文件的總大小和文件格式。 對於分區表,每一個分區計算數字,並計爲整個表的總計。 此元數據存儲在Metastore數據庫中,而且能夠由Impala或Hive進行更新。 若是數字不可用,則值-1用做佔位符。 一些數字,例如數據文件的數量和總大小,老是保持最新的,由於它們能夠被計算得便宜,做爲收集HDFS塊元數據的一部分。bash
SHOW TABLE STATS table_name;
ps:示例顯示了未分區的Parquet表的表統計信息。 文件的數量和大小的值始終可用。 最初,行數是未知的,由於它須要對整個表進行潛在的昂貴掃描,所以該值顯示爲-1。 COMPUTE STATS語句填充任何未知的表統計信息值。分佈式
COMPUTE STATS table_name;
再次查看優化
當元數據在元數據庫數據庫中可用時,Impala查詢計劃器能夠使用有關各個列的統計信息。此方法對於在鏈接查詢中跨表比較的列最有價值,以幫助估計查詢將從每一個表中檢索多少行。這些統計信息對於使用EXISTS()或IN()運算符的關聯子查詢也很重要,這些運算符在內部以鏈接查詢的方式處理spa
show column stats table_name; COMPUTE STATS table_name;
示例顯示了未分區的Parquet表的列統計信息。某些類型的最大和平均大小的值老是可用的,由於這些數字對於數字和其餘固定大小類型是常數。最初,不一樣值的數量是未知的,由於它須要對整個表進行潛在的昂貴掃描,所以該值顯示爲-1。這一樣適用於可變大小類型的最大和平均大小,例如STRING。 COMPUTE STATS語句填充大多數未知列統計信息值。 (它不記錄NULL值的數量,由於當前Impala不會使用該數字進行查詢優化。)code
SHOW DATABASES [[LIKE] 'pattern'] SHOW SCHEMAS [[LIKE] 'pattern'] - an alias for SHOW DATABASES SHOW TABLES [IN database_name] [[LIKE] 'pattern'] SHOW [AGGREGATE | ANALYTIC] FUNCTIONS [IN database_name] [[LIKE] 'pattern'] SHOW CREATE TABLE [database_name].table_name SHOW TABLE STATS [database_name.]table_name SHOW COLUMN STATS [database_name.]table_name SHOW PARTITIONS [database_name.]table_name SHOW ROLES SHOW CURRENT ROLES SHOW ROLE GRANT GROUP group_name SHOW GRANT ROLE role_name
invalidate metadata;