Проблема полного сканирования таблицы Hive (используются разделенные столбцы)

У меня есть БОЛЬШАЯ таблица в Hive 0.13 - в ней примерно 250 ГБ данных в день. В час это, следовательно, около 10 ГБ данных. У меня есть инструмент BI, который хотел бы получать доступ к данным этой таблицы за день или за час, для чего мне нужно протестировать запросы, которые инструмент BI будет генерировать и запускать в Hive.

Один из запросов, когда BI используется для ежедневных данных за вчерашний день, выглядит следующим образом:

select count(*) 
from my_table
where 
yyyy=year(date_sub(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP())),1))
and mm=month(date_sub(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP())),1))
and dd=day(date_sub(TO_DATE(FROM_UNIXTIME(UNIX_TIMESTAMP())),1))
;

Моя таблица в Hive в MY_TABLE, а YYYY, MM и DD - это разделенные столбцы в MY_TABLE. Он уже хранится в формате ORC.

Вышеупомянутый запрос выполняется в течение очень хорошего времени, после чего, когда я вижу вывод EXPLAIN EXTENDED, я ясно вижу, что он выполняет FULL TABLE SCAN MY_TABLE независимо от условий фильтрации.

Как мы можем избежать этой проблемы?

Добрый совет.

Обратите внимание: версия Hive - 0.13. Мы находимся в середине обновления.

Спасибо,

Suddhasatwa

Замечания:

Представленное здесь решение ( почему исключение разделов не происходит для этого запроса?) Не применимо в моем случае, так как я использую Hive 0.13, в то время как функция CURRENT_DATE доступна только после версии Hive 1.+.

0 ответов

Другие вопросы по тегам