Запросы Hive занимают много времени только для запуска заданий по уменьшению карты
Мы используем Hive для специальных запросов и имеем таблицу Hive, которая разбита на два поля (date,id)
,
Теперь для каждой даты существует около 1400 идентификаторов, поэтому в один день добавляется много разделов. Фактические данные находятся в s3. Теперь перед нами стоит задача: select count(*)
в течение месяца из таблицы, то достаточно времени (примерно 1 час 52 мин), чтобы запустить работу по уменьшению карты.
Когда я выполнил запрос в подробном режиме Hive, я вижу, что на этот раз он тратит время, определяющее количество отображаемых карт (вычисление сплитов). Есть ли какие-либо средства, с помощью которых я могу уменьшить это время задержки для запуска задания уменьшения карты?
Это одно из сообщений журнала, которое регистрируется в течение этого времени задержки:
13/11/19 07:11:06 INFO mapred.FileInputFormat: Total input paths to process : 1
13/11/19 07:11:06 WARN httpclient.RestS3Service: Response '/Analyze%2F2013%2F10%2F03%2F465' - Unexpected response code 404, expected 200
1 ответ
Вероятно, это связано с тем, что с перегруженной таблицей этап планирования запросов занимает много времени. Хуже того, сама фаза планирования запроса может занять больше времени, чем фаза выполнения запроса.
Одним из способов преодоления этой проблемы будет настройка вашего метастаза. Но лучшим решением было бы разработать эффективную схему и избавиться от ненужных разделов. Поверь мне, ты действительно не хочешь слишком много маленьких перегородок.
В качестве альтернативы вы также можете попробовать установить hive.input.format в org.apache.hadoop.hive.ql.io.CombineHiveInputFormat, прежде чем выполнить запрос.
НТН