Согласно плану, запрос выполняется на маппере, векторизация не включена.Попробуйте это:
set hive.vectorized.execution.enabled = true;
set hive.vectorized.execution.reduce.enabled=true;
Параллелизм Tune Mapper:
set tez.grouping.max-size=67108864;
set tez.grouping.min-size=32000000;
Воспользуйтесь этими настройками, чтобы увеличить количество работающих картографов.В идеале он должен работать без этой настройки:
set hive.tez.container.size=8192;
Еще одна рекомендация - заменить unix_timestamp()
на UNIX_TIMESTAMP(current_timestamp)
.Эта функция не является детерминированной, и ее значение не является фиксированным для объема выполнения запроса, поэтому предотвращает надлежащую оптимизацию запросов - с версии 2.0 она устарела в пользу CURRENT_TIMESTAMP
constant.
(UNIX_TIMESTAMP(current_timestamp) - 5*60*60)
Такжеваши файлы очень маленькие.размер раздела 200-500, 12 файлов на раздел, размер файла 20-50 МБ.К счастью, это ORC, и вы можете объединять файлы, используя ALTER TABLE CONCATENATE COMMAND .12 файлов - это не проблема, и вы, вероятно, не заметите улучшения при запросе одного раздела.
См. Также этот ответ: https://stackoverflow.com/a/48487306/2700344