2016-09-23 4 views
0

У меня есть таблица ульи ежедневно перегородки день мудрая, что-то, как показано ниже (которое включает в себя раздел будущего Дейта а)сбросив раздел улья динамически

20160901 
20160902 
........ 
........ 
........ 
20160931 
20161001 
20161002 

Я хочу передать одну даты сказать, например, вчерашняя дата 20160922 и хотите динамически удалить все разделы, которые являются> = 20160922 (хотя сегодня это 20160923, но я хочу сбросить с даты в 20160922).

Как я могу удалить все эти разделы динамически.

ответ

0

Вы не можете делать это непосредственно в улье, так как он не поддерживает динамический sql.

Работает с использованием сценария оболочки/или любого скрипта, создающего файл, имеющий сценарий перетаскивания, как показано ниже.

alter table partition_t drop if exists partition (y = 20160922);

alter table partition_t drop, если существует раздел (y = 20160921);

alter table partition_t drop, если существует раздел (y = 20160920); ...

затем запустить улья -v -f ./file.sh

альтер таблицы падение partition_t если существует раздел

0

Перед Вставка данных в таблицу, выполните следующие действия.

1) Перейти к Hdfs Папка этой таблицы и удалить все папки Внутри Таблица Справочник с использованием команд оболочки. Hadoop фс -rm г <>

2) Запуск MSCK ремонт Таблица обновить метаданные о разделах.

над двумя шагами удалит все доступные разделы на основе шаблона.

Теперь введите новые данные.

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