динамическая вставка раздела Hive - PullRequest
0 голосов
/ 27 августа 2018

У меня проблема со вставкой записей в таблицу с именем 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

Где моя ошибка?

1 Ответ

0 голосов
/ 27 августа 2018

Uff ... Я нашел решение: Имя столбца раздела должно быть order_month, если я добавлю другое имя столбца, я получу сообщение об ошибке выше.

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