2015-02-13 3 views
0

Я аналитик, пытающийся построить запрос, чтобы извлекать данные за последние 7 дней из таблицы в Hadoop. Сама таблица разделена по дате.Раздел запроса с расчетом и избегайте полного сканирования таблицы

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

Пример запроса:

SELECT * FROM target_table 
WHERE date >= DATE_SUB(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),7); 

Я оценил бы некоторые советы, как я могу пересмотреть свой запрос, избегая при этом полное сканирование таблицы.

Спасибо!

ответ

0

Я не уверен, что у меня изящное решение, но поскольку я использую Oozie для координации рабочего процесса, я передаю start_date и end_date из Oozie. В отсутствие Oozie я могу использовать bash для вычисления соответствующих дат и передачи их в качестве параметров.

У фильтров разделов всегда была эта проблема, поэтому я просто нашел обходное решение.

+0

Спасибо Прадипа. Возможно, я тоже смогу изучить Оози. – eyy

0

У меня было обходное решение, и оно работает для меня, если нет даты более 30/60/90/120.

запрос как

(((unix_timestamp(date,'yyyy-MM-dd')) >= (unix_timestamp(date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd') ,${sub_days}),'yyyy-MM-dd'))) and((unix_timestamp(date,'yyyy-MM-dd')) <= (unix_timestamp(FROM_UNIXTIME(UNIX_TIMESTAMP(),'yyyy-MM-dd'),'yyyy-MM-dd')))) 

sub_days = прохождение paramenter, здесь может быть 7

+0

Hi Debjit, я пробовал ваш подход, но по какой-то причине он по-прежнему работает как сканирование таблицы для меня. Позвольте мне немного поэкспериментировать. Цените это, если у вас есть другие идеи. Спасибо! – eyy

+0

Применения для опоздания, чтобы ответить, но я думаю, вы можете обратиться за помощью к тому же, используя функцию Bucketing Hive. Это поможет вашей проблеме. Не так много обходного пути, используя Bucketing, но некоторые образцы проверили, и нашли, что концепция Bucketing работает лучше. [Ссылка] (https://cwiki.apache.org/confluence/display/Hive/ListBucketing#ListBucketing-BasicPartitioning) – Deb

Смежные вопросы