动态分区插入配置单元



我使用动态分区将记录插入名为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;

选择查询本身进展顺利,但我总是收到以下错误消息:

FAILED: SemanticException Partition spec {order_m=null} contains non-partition columns

我的错误在哪里?

Uff...我找到了解决方案:分区列名称必须order_month,如果我输入不同的列名称,则会收到上述错误。

最新更新