HiveQL работает слишком медленно (нужно улучшить производительность) - PullRequest
0 голосов
/ 25 июня 2018

Я работаю над Hive и новым для него.

Я пытаюсь улучшить производительность следующего кода:

INSERT INTO target_table
(col1,col2,col3...)   --- I have 64 columns in total
SELECT
 t1.col1,t1.col2,t1.col3...
FROM (
      SELECT
      ts.col1,ts.col2,ts.col3...
      FROM source_table ts
      LEFT JOIN label_table tb 
       ON ( ts.colx = tb.colx AND ts.coly = tb.coly )
      WHERE
      ts.colx <> '' AND ts.colx <> 'NULL'
      AND ts.colx IS NOT NULL
      AND tb.colx IS NULL 
      LIMIT 10000
      ) t1

Цель этого кода - вставитьстроки в target_table, которые относятся к source_table и чьи colx не найдены в label_table.

* source_table содержит около 1,4 миллиарда строк, а label_table имеет меньше строк, ноЯ добавлю больше строк в label_table в будущем (номер строки в конечном итоге превысит 1 миллиард).

Моя проблема: в настоящее время этот код будет обрабатывать 10000 строк примерно за полчаса (LIMIT - это 10,000).Если я увеличу LIMIT до 1,000,000, мой код застрянет, когда процесс сокращения достигнет 66,6%.Поскольку мне нужно обработать 1,4 миллиарда строк, общее время будет слишком большим для меня.Есть ли способ, который может помочь повысить производительность этого кода?Может ли кто-нибудь дать какой-нибудь совет?

Заранее спасибо!

1 Ответ

0 голосов
/ 25 июня 2018

Вы можете сохранить свой подзапрос

 SELECT
  ts.col1,ts.col2,ts.col3...
  FROM source_table ts
  LEFT JOIN label_table tb 
   ON ( ts.colx = tb.colx AND ts.coly = tb.coly )
  WHERE
  ts.colx <> '' AND ts.colx <> 'NULL'
  AND ts.colx IS NOT NULL
  AND tb.colx IS NULL 
  LIMIT 10000

в новую промежуточную таблицу, особенно если вам нужно использовать эти промежуточные данные несколько раз. Затем вы можете применить дополнительные оптимизации в этой промежуточной таблице, такие как использование ORC, секционирование или сбор статистики.

Я бы также рекомендовал вам не объединять таблицы в Hive, это обычные проблемы с производительностью.

Наконец, ознакомьтесь с этим руководством , содержащим общие советы по оптимизации для Hive

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