指定要在配置单元中分区的字段时返回错误

cqoc49vn  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(331)

如果我将“dt”指定为分区,则会出现错误“failed:execution error,return code 2 from org.apache.hadoop.hive.ql.exec.mr.mapredtask”。下面是我的分区代码:

create EXTERNAL table novaya.user_goods_behaviour 
(  member_srl           string,  
   productid            string ,   
   buy_amt              bigint,  
   return_amt           bigint, 
   cart_cnt             bigint,  
   view_cnt             bigint,  
   search_click_cnt     bigint , 
   brand                string , 
   mng_catecode1        int ,
   mng_cate1            string , 
   mng_catecode2        int ,
   mng_cate2            string , 
   mng_catecode3        int ,
   mng_cate3            string  ,
   mng_catecode4        int ,
   mng_cate4            string ) partitioned by (dt string) 
   ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS parquet;

insert overwrite table novaya.user_goods_behaviour PARTITION (dt)
select * from ...;

但是,当我不使用分区时,它是可以的。

create EXTERNAL table novaya.user_goods_behaviour 
(  member_srl           string,  
   productid            string ,
    dt                   string,
   buy_amt              bigint,  
   return_amt           bigint, 
   cart_cnt             bigint,  
   view_cnt             bigint,  
   search_click_cnt     bigint , 
   brand                string , 
   mng_catecode1        int ,
   mng_cate1            string , 
   mng_catecode2        int ,
   mng_cate2            string , 
   mng_catecode3        int ,
   mng_cate3            string  ,
   mng_catecode4        int ,
   mng_cate4            string )  
   ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS parquet;

 insert overwrite table novaya.user_goods_behaviour select * from ...;

所以我想知道这有什么问题,以及如何解决它。非常感谢。

vnjpjtjt

vnjpjtjt1#

分区字段应该在选择投影列表中的最后一个。
i、 e.自 dt 是分区列,它应该是最后一个。您正在使用 * 接线员,所以不确定 dt 是不是最后一个。
尝试以下查询:

insert overwrite table novaya.user_goods_behaviour PARTITION (dt)
Select `(dt)?+.+`, st from ....;
sqxo8psd

sqxo8psd2#

尝试使用列名:

insert overwrite table novaya.user_goods_behaviour PARTITION (dt)
select column1,column2.... from ...

这并不能解决您的问题,然后您可以尝试在插入查询之前运行此查询:

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

相关问题