Подход к сокращению времени выполнения запроса Hive - PullRequest
1 голос
/ 07 марта 2019

Мы выполняем этот нижеприведенный запрос ежедневно, и этот запрос выполняется в течение примерно 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

Я попытался уменьшить количество редукторов, чтобы ускорить процесс, а также попытался включить векторизацию, но здесь не очень-то повезло.Мы работаем на тез.

Ответы [ 2 ]

0 голосов
/ 07 марта 2019
  1. Вам не нужно применять DISTINCT два раза
  2. Если таблица mstr_wrk.cust_transation разбита на load_date, отсечение секций не будет работать, потому что вы используете функции.Это приведет к полному сканированию таблицы.Вычислять даты в скрипте оболочки и передавать в качестве параметров

Проверьте производительность этого скрипта перед параметризацией вашего скрипта

  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'
0 голосов
/ 07 марта 2019

Перепроектировать таблицу и использовать INDEX.

Например, я бы использовал числовой или перечислительный столбец «state», а также числовой или перечислительный столбец «event».Это может помочь сделать эффективные индексы вместо varchar или текстовых типов.

Индексы значительно улучшают скорость запросов, если запросы их используют.

В любом случае, не зная структуру таблицы и номер таблицы.записи связаны, я просто догадываюсь ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...