Принудительно HiveServer2 для запуска задания MapReduce - PullRequest
2 голосов
/ 17 мая 2019

Я использую улей-1.1.0.Отправка запросов в HiveServer2 через Beeline, которые предназначены только для чтения и не содержат предикатов, заставит HiveServer2 попытаться прочитать данные из самой HDFS, не вызывая задание MapReduce:

SELECT * FROM my_table LIMIT 100;

Для очень больших наборов данных это может вызвать HiveServer2удерживать много памяти, что приводит к длительным паузам сбора мусора.Добавление «поддельного» предиката заставит HiveServer2 запускать задание MapReduce по желанию;например,

SELECT * FROM my_table WHERE (my_id > 0 OR my_id <= 0) LIMIT 100;

Под «фальшивкой» я подразумеваю предикат, который не имеет значения;Приведенный выше пример предиката всегда будет верным.Есть ли параметр, заставляющий HiveServer2 всегда запускать задание MapReduce без добавления поддельных предикатов?

Я не говорю о том, когда HiveServer2 определяет, что он может запускать задание MapReduce локально;У меня это отключено полностью:

> SET hive.exec.mode.local.auto;
+----------------------------------+--+
|               set                |
+----------------------------------+--+
| hive.exec.mode.local.auto=false  |
+----------------------------------+--+

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

Любое руководство высоко ценится.Спасибо!

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