Hive执行 报错:FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

本文针对HiveOnSpark环境中执行Hive脚本时出现的执行错误进行了详细分析,并提供了两种有效的解决方案,一是通过GROUP BY和去重操作减少数据量,二是调整Hive配置参数来优化Join操作。


项目场景:

HiveOnSpark环境下执行hive脚本,报错。



问题描述:

提示:这里描述项目中遇到的问题:
例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据
APP 中接收数据代码:

@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget(); } 


原因分析:

 通过在网上找资料:发现主要原因是数据倾斜导致的问题。executor内存不足导致spark task的任务失败。



解决方案:

解决方法 1:
对数据更大的表通过进行GROUP BY 还有去重 等操作,减少数据量。
解决方法 2:

修改hive的配置参数
set hive.auto.convert.join = false;
说明: 将Join转成普通的Map Join
默认值: false
set hive.ignore.mapjoin.hint = false;
说明:  忽略mapjoin hint ,即mapjoin标记
默认值: true,默认忽略
set hive.exec.parallel = true;
说明:是否并行提交任务
默认值:false,关闭此功能
 

评论 18
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值