Hive插入任务执行失败:容器退出码127及prelaunch.err错误排查
Hive插入任务失败排查与解决
问题现象
执行Hive插入语句:
hive> insert into test.emp (sr_no,usr_name,city) values (10,"Prince","Kathmandu");
任务执行失败,返回核心报错:
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
同时Container日志显示:
[2023-03-11 03:39:10.914]Container exited with a non-zero exit code 127. Error file: prelaunch.err. /bin/bash: /Library/Internet: No such file or directory
失败原因
核心问题是环境变量中配置的路径包含空格,但未用引号包裹。bash解析无引号的带空格路径时,会将空格前的部分当作命令,空格后的部分当作参数。比如常见的Java安装路径/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home,若JAVA_HOME直接配置该路径且未加引号,bash会试图执行/Library/Internet这个不存在的命令,从而触发127错误(命令未找到),导致Container启动失败。
解决办法
- 检查系统或Hadoop/Hive相关环境变量(如
JAVA_HOME、HADOOP_HOME、HIVE_HOME等),定位包含空格的路径配置 - 修改对应的环境变量配置文件(如
~/.bash_profile、~/.zshrc、$HADOOP_HOME/etc/hadoop/hadoop-env.sh、$HIVE_HOME/conf/hive-env.sh),给带空格的路径加上双引号:- 错误示例:
export JAVA_HOME=/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home - 正确示例:
export JAVA_HOME="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"
- 错误示例:
- 重新加载环境变量配置,例如执行:
(注:若使用zsh则执行source ~/.bash_profilesource ~/.zshrc,根据当前shell环境调整) - 重启Hadoop和Hive服务,确保新配置生效
- 重新执行Hive插入语句
内容的提问来源于stack exchange,提问作者Prince Mehta
相关产品推荐
相关产品推荐

