遇到 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 日志获取更详细的错误信息。
这些方法可以根据不同的情况尝试,以解决 Hive 执行错误的问题。如果问题依然存在,建议查看 Hive 日志获取更详细的错误信息。
8040

被折叠的 条评论
为什么被折叠?



