impala字符串轉日期格式,Impala命令COMPUTE STATS的解析

 2023-11-16 阅读 20 评论 0

摘要:Impala命令COMPUTE STATS的解析 COMPUTE STATS主要作用: 收集有關表中數據的容量和分布以及所有相關列和分區的信息。這些信息存儲在metastore數據庫中,Impala使用這些信息來幫助優化查詢。例如,如果Impala可以確定一個表是大是小,或者有很多或很

Impala命令COMPUTE STATS的解析

COMPUTE STATS主要作用:

收集有關表中數據的容量和分布以及所有相關列和分區的信息。這些信息存儲在metastore數據庫中,Impala使用這些信息來幫助優化查詢。例如,如果Impala可以確定一個表是大是小,或者有很多或很少不同的值,它就可以為一個連接查詢或插入操作適當地組織并行化工作。

語法:

COMPUTE STATS [db_name.]table_nameCOMPUTE INCREMENTAL STATS [db_name.]table_name [PARTITION (partition_spec)]

(PARTITION)只允許分區子句與增量子句組合使用。對于計算增量統計,它是可選的,對于刪除增量統計,它是必需的。當您在COMPUTE INCREMENTAL STATS或DROP INCREMENTAL STATS語句中通過PARTITION (partition_spec)子句指定分區時,必須在規范中包含所有分區列,并為所有分區鍵列指定常量值。

最初,Impala依賴于用戶來運行Hive分析表語句,但是這種收集統計數據的方法被證明是不可靠且難以使用的。Impala COMPUTE STATS語句從頭開始構建,以提高該操作的可靠性和用戶友好性。COMPUTE STATS不需要任何設置步驟或特殊配置。您只運行一個Impala COMPUTE STATS語句來收集表和列的統計信息,而不是針對每種統計信息分別運行Hive ANALYZE表語句。
COMPUTE INCREMENTAL STATS變體是分區表的快捷方式,它只在分區的一個子集上工作,而不是整個表。增量特性使它適合于具有許多分區的大型表,在這些表中,每次添加或刪除一個分區時,完整的COMPUTE STATS操作都要花費很長時間。有關詳細使用情況,請參見增量統計的概述。
計算增量統計僅適用于分區表。如果對未分區表使用INCREMENTAL子句,Impala會自動使用原始的COMPUTE STATS語句。這樣的表在顯示表stats輸出的Incremental stats列下顯示false。

Note:

由于許多性能最關鍵、資源最密集的操作都依賴于表和列統計信息來構建準確、高效的計劃,因此計算統計信息是ETL過程最后的一個重要步驟。

impala字符串轉日期格式,在慢速查詢的性能調優期間,或在內存不足的情況下進行故障排除時,
第一步是在所有表上運行COMPUTE STATS:
準確的統計數據有助于Impala為連接查詢構建高效的查詢計劃,提高性能并減少內存使用。
準確的統計數據有助于Impala有效地將插入操作分配到拼花表中,提高性能并減少內存使用。
準確的統計數據可以幫助Impala估計每個查詢所需的內存,這在使用資源管理特性(如許可控制和紗線資源管理框架)時非常重要。統計數據幫助Impala實現高并發性,充分利用可用內存,避免與其他Hadoop組件的工作負載爭用。

復雜類型的考慮:

目前,COMPUTE STATS語句創建的統計信息不包括關于復雜類型列的信息。復雜列的列統計指標總是顯示為-1。對于涉及復雜類型列的查詢,Impala使用啟發式方法來估計這些列中的數據分布。
HBase注意事項:
COMPUTE STATS也適用于HBase表。為HBase表收集的統計信息與為hdfs支持的表收集的統計信息有所不同,但是在連接查詢中涉及到HBase表時,仍然使用元數據進行優化。

性能注意事項:

COMPUTE STATS收集的統計信息用于優化連接查詢、向拼花表插入操作和其他資源密集型SQL語句。
對于大型表,COMPUTE STATS語句本身可能需要很長時間,您可能需要調優它的性能。

COMPUTE STATS語句不能與EXPLAIN語句或impala-shell中的SUMMARY命令一起工作。

您可以使用impala-shell中的概要文件語句來整體檢查語句的計時信息。

如果一個基本的COMPUTE STATS語句對于一個分區表花費了很長時間,那么可以考慮切換到COMPUTE INCREMENTAL STATS語法,以便每次只分析新添加的分區。

文件格式注意事項:

flushdns命令?COMPUTE STATS語句處理使用Impala支持的任何文件格式創建的表。有關使用不同文件格式的詳細信息,請參見Impala如何處理Hadoop文件格式。根據表的文件格式,以下考慮適用于計算統計信息。
COMPUTE STATS語句對文本表沒有任何限制。這些表可以通過Impala或Hive創建。
COMPUTE STATS語句適用于拼花表。這些表可以通過Impala或Hive創建。
COMPUTE STATS語句可以不受CDH 5.4 / Impala 2.2或更高版本中Avro表的限制。在以前的版本中,COMPUTE STATS只適用于通過Hive創建的Avro表,并且要求CREATE TABLE語句使用sql風格的列名和類型,而不是Avro風格的模式規范。
COMPUTE STATS語句對RCFile表沒有任何限制。這些表可以通過Impala或Hive創建。
COMPUTE STATS語句可以處理沒有限制的SequenceFile表。這些表可以通過Impala或Hive創建。
COMPUTE STATS語句處理分區表,不管所有分區使用相同的文件格式,還是通過ALTER TABLE定義某些分區以使用不同的文件格式。

DDL語句類型:

取消:當在內部運行INSERT或SELECT操作時,某些多階段語句(創建表作為SELECT和COMPUTE STATS)可以在某些階段取消。取消這個語句,使用ctrl - c從impala-shell解釋器,取消按鈕看頁面的色調,行動>從查詢列表中取消Cloudera經理,或取消從動態查詢列表中(為特定節點)的查詢選項卡上的黑斑羚web UI(端口25000)。
目前,CDH 4下的COMPUTE STATS語句不存儲小數列的任何統計信息。當Impala在CDH 5下運行時,它在metastore數據庫中對DECIMAL有更好的支持,COMPUTE STATS確實收集了DECIMAL列的統計信息,而Impala使用這些統計信息來優化查詢性能。

Note:在Impala 1.4.0之前,COMPUTE STATS統計每個列中的空值數量,并將該數字記錄在metastore數據庫中。因為Impala目前在查詢規劃期間不使用空計數,所以Impala 1.4.0及更高版本通過跳過這個空計數來加速COMPUTE STATS語句。

內部細節:

在后臺,COMPUTE STATS語句執行兩條語句:一條通過count(*)函數計算表中每個分區(或者未分區的整個表)的行數,另一條通過NDV()函數計算每列中不同值的近似數量。您可能在監視和診斷顯示中看到這些查詢。影響其他查詢的性能、可伸縮性和執行的因素(如并行執行、內存使用、允許控制和超時)也適用于COMPUTE STATS語句運行的查詢。

HDFS權限:

impalad守護進程所運行的用戶ID(通常是impala用戶)必須具有源目錄中所有受影響文件的讀權限:未分區表中的所有文件或計算統計表中的分區表;如果是計算增量統計,則為不包含增量統計的分區中的所有文件。它還必須具有所有包含數據文件的相關目錄的讀取和執行權限。(本質上,COMPUTE STATS需要與它對表運行的底層SELECT查詢相同的權限。)

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/173641.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息