如果我将“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 ...;
所以我想知道这有什么问题,以及如何解决它。非常感谢。
2条答案
按热度按时间vnjpjtjt1#
分区字段应该在选择投影列表中的最后一个。
i、 e.自
dt
是分区列,它应该是最后一个。您正在使用*
接线员,所以不确定dt
是不是最后一个。尝试以下查询:
sqxo8psd2#
尝试使用列名:
这并不能解决您的问题,然后您可以尝试在插入查询之前运行此查询: