[英]Approach to reduce the execution time of a Hive query
由於交易表中的數據量很大,我們每天在下面的查詢中運行此查詢,此查詢運行3個小時左右。 有什么方法可以調整此查詢或減少執行時間?
CREATE TEMPORARY TABLE t1 AS
SELECT DISTINCT EVENT_DATE FROM (
SELECT DISTINCT EVENT_DATE FROM mstr_wrk.cust_transation
WHERE load_date BETWEEN CAST(CAST('2019-03-05 04:00:31.0' AS TIMESTAMP) AS DATE) AND CURRENT_DATE() AND event_title = 'SETUP'
AND state != 'INACTIVE' AND mode != 'DORMANT') T
我試圖減少減速器的數量以幫助加快速度,並且還嘗試實現矢量化,但是在這里運氣並不好。 我們正在tez上運行。
重新設計表並使用INDEX。
例如,我將使用數字“狀態”列或枚舉,以及數字或枚舉“事件”列。 這可以幫助創建有效的索引,而不是varchar或文本類型。
如果查詢正在使用索引,索引將大大提高查詢速度。
無論如何,不知道表的結構和所涉及的記錄數,我只是在猜測...
mstr_wrk.cust_transation
被划分load_date
,因為你使用的功能分區修剪將無法正常工作。 這將導致表完全掃描。 在shell腳本中計算日期並作為參數傳遞 在參數化腳本之前檢查此腳本性能
CREATE TEMPORARY TABLE t1 AS
SELECT DISTINCT EVENT_DATE FROM mstr_wrk.cust_transation
WHERE load_date >= '2019-03-05' AND load_date <= '2019-03-07'
AND event_title = 'SETUP'
AND state != 'INACTIVE' AND mode != 'DORMANT'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.