Таблица кустов разделов на основе года / месяца из столбца меток времени
У меня есть таблица улья, которую я импортирую из Postgres, используя sqoop. Эта таблица состоит из столбца updated_at, который имеет значения меток времени. Я пытаюсь разделить таблицу по году и месяцу из этого значения метки времени. Есть ли способ извлечь части из отметки времени, чтобы использовать в операторе разделения.
Моя текущая стратегия заключается в том, чтобы импортировать таблицу непосредственно в куст, затем создать секционированную таблицу и использовать INSERT OVERWRITE TABLE, чтобы заполнить таблицу разделами.
CREATE TABLE zips_part(id int,code string,timezone_offset int, timezone_d boolean) PARTITIONED BY(updated_at timestamp)
Следующим шагом является перезапись этой таблицы.
insert overwrite table zips_part PARTITION(updated_at) select z.id, z.updated_at, z.code, z.timezone_offset, z.timezone_d FROM zip_codes z;
(Продолжая шаги, упомянутые в http://kickstarthadoop.blogspot.com/2011/06/how-to-speed-up-your-hive-queries-in.html)
Я пытался использовать функции части даты для года, но это не сработало.
этот дает ошибку разбора
insert overwrite table zips_part PARTITION(year(updated_at)) select z.id, z.updated_at, z.code, z.timezone_offset, z.timezone_d FROM zip_codes z;
этот дает похожую ошибку разбора
insert overwrite table zips_part PARTITION(year=year(updated_at)) select z.id, z.updated_at, z.code, z.timezone_offset, z.timezone_d FROM zip_codes z;