当前位置首页 > Apache知识

执行Hivesql报FAILED:ExecutionError,returncode2fromorg.apache.hadoop

阅读次数:2435 次  来源:admin  发布时间:

在hive Beeline命令行使用insert into ... select ...向hive表插入数据时,报FAILED:Execution Error,return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask错误,具体如下所示:

然后查看hive服务日志,在日志中发现了Error:Java heap space信息,如下所示:

然后在hive命令行执行set mapred.map.child.java.opts;发现-Xmx的只为200m,而本次hive处理的数据大概有1.8亿,故怀疑是内存设置太小导致的堆内存溢出,通过将mapred.map.child.java.opts中-Xmx的值修改为2048m后,重新执行sql语句,任务运行成功。

修改mapred.map.child.java.opts参数有两种方法:

1)在hive命令行执行set mapred.map.child.java.opts=-Xmx2048m;

这种方法设置的参数只是在当前session中生效,一旦退出了当前hive命令行,下次再进入hive命令行后之前设置的该参数值不再生效

2)修改hive客户端目录下hive-site.xml配置文件中对应值,如果该配置中已存在mapred.map.child.java.opts配置项,则只需要修改对应的值即可;如果该配置中没有该配置项则需要加入对应的信息,如下:

lt;property>

lt;name>mapred.map.child.java.opts</name>

lt;value>-Xmx2048m</value>

lt;/property>

这种方式修改的配置会在所有session中生效

上一篇:迅为NXPi.MX8开发板Android9.0、Linux、Yocto系统、Debian9统、Ubuntu20系统-topeet
下一篇:ApacheHudi如何加速传统的批处理模式?