【大数据技术】本质原因之Hive分区表插入数据报错Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask

背景:

实操:

先准备一张临时表,其中数据如下(其中sex和class的内容为中文)

create table tmp( 	
	id int , 	
	name string , 	
	score int , 	
	sex string , 	
	class string 
)  row format delimited fields terminated by ',' ;

在这里插入图片描述
新建分区表stu_p

create table stu_p(
id int ,
name string ,
score int 
)
partitioned by(year string ,month string ) 
row format delimited fields terminated by ',' ;

动态分区的方法将数据插入到stu_p

insert into table stu_p select * from tmp ;
或者
insert into table stu_p select id ,name ,score ,sex,class from tmp ;

报错如下:

FAILED: Execution Error, return code 1 from
org.apache.hadoop.hive.ql.exec.MoveTask. Exception when loading 6 in
table stu_p with
loadPath=hdfs://localhost:9000/user/hive/warehouse/db1.db/stu_p/.hive-staging_hive_2022-07-28_11-40-02_443_3225396161542468090-1/-ext-10000

在这里插入图片描述
可见MR任务是没有问题的,只是移动数据到hdfs对应目录时出错,经过分析才发现,因为分区字段里sex和class的内容是中文,在生成中文的目录时出错,故将中文字段改成英文后,可使用动态分区的方法成功插入

修改tmp表数据如下:
在这里插入图片描述
重新执行插入sql,可顺利插入

insert into table stu_p select * from tmp ;

在这里插入图片描述

结论(重要):

1、分区表的分区字段内容里最好不用中文;
2、若出现上述报错,可考虑修改元数据保存格式问题,我的元数据保存在mysql里,可尝试修改mysql里Metastroe所在库的字符编码(目前正研究中) ;

----本文待更新
更改字符编码参看https://blog.csdn.net/bbvjx1314/article/details/103172123/

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daydayup-2016

你的鼓励将是我创作的最大动力哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值