簡體   English   中英

減少Hive查詢執行時間的方法

[英]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或文本類型。

如果查詢正在使用索引,索引將大大提高查詢速度。

無論如何,不​​知道表的結構和所涉及的記錄數,我只是在猜測...

  1. 您無需兩次申請DISTINCT
  2. 如果表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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM