Как разделить таблицу по месяцам и дням в улье - PullRequest
0 голосов
/ 01 сентября 2018

Я создал таблицу с:

CREATE EXTERNAL TABLE extab (
vendorID string, 
orderID string , 
ordertime string
) 
location '/common_folder/data'

Затем я создал раздел по месяцам и дням

CREATE EXTERNAL TABLE part_extab(
endorID string, 
orderID string , 
ordertime string
) 
PARTITIONED by (month string, day string)
location '/common_folder/data'

Затем вставьте данные в секционированную таблицу

INSERT OVERWRITE TABLE 
select vendorId, orderId, ordertime , month, day
FROM extab

КАК мне извлечь месяц, день из времени заказа ??

1 Ответ

0 голосов
/ 01 сентября 2018

Использовать динамическую загрузку раздела. Если ваша дата в правильном формате, функции month() и day() будут работать:

set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;

INSERT OVERWRITE TABLE part_extab partiion (month, day)
select vendorId, orderId, ordertime , 
       lpad(month(ordertime),2,0) as month,  
       lpad(day(ordertime),2,0) as day
FROM extab;

В качестве альтернативы вы можете использовать substr () для извлечения месяца и дня, как в this answer

...