hive执行sql报错 FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

发布时间 2023-12-06 09:52:46作者: 所向披靡zz

前言:

执行hive sql报错,sql逻辑是两个表左连接并将数据插入新的表中。

报错信息:

[ERROR] 2023-12-05 15:49:49.165 +0800 - execute sql error: Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
[ERROR] 2023-12-05 15:49:49.165 +0800 - sql task error
java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask
    at org.apache.hive.jdbc.HiveStatement.waitForOperationToComplete(HiveStatement.java:385)
    at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:254)
    at org.apache.hive.jdbc.HiveStatement.executeUpdate(HiveStatement.java:490)
    at org.apache.hive.jdbc.HivePreparedStatement.executeUpdate(HivePreparedStatement.java:122)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)

解决方式:

#关闭自动装载(默认开启)原因:可能是在map join的时候数据量比较大,服务器内存不足,不足以放下小表中的数据。
set hive.auto.convert.join= false;
#不忽略MAPJOIN标记(默认值:true;是否忽略mapjoin hint 即HQL 语句中的 mapjoin 标记)
set hive.ignore.mapjoin.hint=false;