У меня проблема со вставкой записей в таблицу с именем exam_51_final
с использованием динамического разделения, это мой сценарий:
create table exam_51_temp(
order_id int,
order_date bigint,
order_customer_id int,
order_status string)
stored as avro
TBLPROPERTIES ('avro.schema.url'='/user/ccp/20180827/51/avro.schema');
Когда я печатаю вывод, у меня есть:
68878 1404770400000 6753 COMPLETE COMPLETE
68879 1404856800000 778 COMPLETE COMPLETE
68880 1405202400000 1117 COMPLETE COMPLETE
Тогда у меня есть моя таблица exam_51_final
, созданная следующим образом:
create table exam_51_final(
order_id int,
order_date bigint,
order_customer_id int,
order_status string)
partitioned by (order_month string)
stored as avro;
Я активирую динамическое разбиение с помощью:
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
Затем я наконец пытаюсь вставить записи из exam_51_temp
в exam_51_final
имитация фиктивного столбца динамического раздела двумя способами:
1)
insert into table exam_51_final partition(order_m)
select order_id,order_date,order_customer_id,order_status,(case
when order_id < 1000 then '2018-05'
when order_id >= 1000 then '2018-06'
end) order_m
from exam_51_temp;
2)
insert into table exam_51_final partition(order_m)
select order_id,order_date,order_customer_id,order_status, order_status as order_m
from exam_51_temp;
Сам запрос select выполняется нормально, но я всегда получаю следующее сообщение об ошибке:
FAILED: SemanticException Partition spec {order_m=null} contains non-partition columns
Где моя ошибка?