遇到 Hive 执行错误 "FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask" 时,可以尝试以下几种解决方法:
亲测1+6就可以好使。
设置 Hive 支持并发: 在运行 SQL 命令前,可以尝试设置 hive.support.concurrency 为 false。
set hive.support.concurrency=false;
调整 YARN 资源配置: 如果是因为 YARN 资源不足,可以修改 yarn-site.xml 配置文件,例如增加 yarn.scheduler.minimum-allocation-mb 和 yarn.scheduler.maximum-allocation-mb 的值。
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
调整 MapReduce 内存设置: 如果是因为内存溢出,可以在运行 SQL 命令前设置 MapReduce 的内存参数。
set mapreduce.map.memory.mb=10150;
set mapreduce.map.java.opts=-Xmx6144m;
set mapreduce.reduce.memory.mb=10150;
set mapreduce.reduce.java.opts=-Xmx8120m;
同步集群时间: 如果是因为各个节点时间不同步,可以查看集群时间并使用 ntpdate 命令同步时间。
ntpdate cn.pool.ntp.org
检查 Hadoop 和 Hive 版本兼容性: 如果是因为版本不兼容,建议查看兼容表确认。
处理动态分区问题: 如果是因为分区数量太多,可以设置动态分区的相关参数。
set hive.exec.dynamic.partition=true;
set hive.exec.max.dynamic.partitions=1000;
set hive.exec.max.dynamic.partitions.pernode=100;
关闭自动装载: 可以尝试关闭 Hive 的自动装载功能。
set hive.auto.convert.join= false;
增加 Hive 启动堆栈内存: 修改 hadoop-env.sh 和 hive-config.sh 中的配置,增加内存设置。
export HADOOP_CLIENT_OPTS="-Xmx2048m $HADOOP_CLIENT_OPTS"
export HADOOP_HEAPSIZE=${HADOOP_HEAPSIZE:-2048}
执行引擎设置: 可以尝试设置执行引擎为 Spark 或 Tez。
set hive.execution.engine=spark;
检查数据类型和表结构: 确保插入数据的类型与目标表的列类型匹配,并且表结构是一致的。
优化查询语句: 使用 EXPLAIN 语句分析查询的执行计划,优化查询性能。
检查集群资源利用情况: 如果集群资源不足,可以考虑增加资源或者优化资源分配。
这些方法可以根据不同的情况尝试,以解决 Hive 执行错误的问题。如果问题依然存在,建议查看 Hive 日志获取更详细的错误信息。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/m0_56341622/article/details/142462751
免责申明:
本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!
《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu
《数栈V6.0产品白皮书》下载地址:https://fs80.cn/cw0iw1
想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack