Изменение спецификации раздела таблицы улья и перемещение данных - PullRequest
1 голос
/ 18 мая 2019

У меня есть сотрудник из внешней таблицы кустов, который разделен по extract_timestamp (гггг-мм-дд чч: мм: сс), как показано ниже.

empid   empname     extract_time
1       abc         2019-05-17 00:00:00
2       def         2019-05-18 14:21:00

Я пытаюсь удалить раздел с помощью extract_time и изменитьэто год, месяц и день раздела.Я следую приведенному ниже методу для этого.

1.Создайте новую таблицу employee_new с разделами год, месяц и день

 create external table employee_new
(empid int,
 empname string
)
partitioned by (year int,month int,day int)
location '/user/emp/data/employee_new.txt';

2.вставить перезапись в employee_new, выбрав данные из таблицы employee

insert overwrite into employee_new as select*,year(extract_time),month(extract_time)
,day(extract_time) 
from employee

3.Удалите employee и employee_new и создайте таблицу сотрудников поверх /user/emp/data/employee_new.txt

Пожалуйста, дайте мне знать, если этот метод эффективен и есть ли более эффективные способы сделать то же самое.

1 Ответ

0 голосов
/ 18 мая 2019

Разделение только на date yyyy-MM-dd, если это возможно, если последующий процесс может записывать часовые файлы в ежедневные папки.Для такой маленькой таблицы разделение по годам, месяцам и дням по отдельности кажется излишним.Это будет все еще слишком много папок.Если таблица разбита по дате yyyy-MM-dd, отсечение секций будет работать для вашего сценария использования, потому что вы запрашиваете по дню, году или месяцу.

Для фильтрации по году в этом случае вы предоставите условие

where date >= '2019-01-01' and date < '2020-01-01',

для фильтрации по месяцам:

where date >= '2019-01-01' and date < '2020-02-01'

и день: where date = '2019-01-01'

Листинг файловой системы будет работать намного быстрее.

И если невозможно перестроить основной процесс для записи в папки yyyy-MM-dd, тогда ваш новыйдизайн, как вы описали в вопросе (папки yyyy / MM / dd), является единственным решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...