HQL 报 return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 错误解决方案

执行一段HQL之后,报了如下错误

FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTas

此错误只能通过yarn 日志进行查看,通过查看发现报OOM,解决OOM问题不能单纯增加计算空间,比如MAP以及REDUCE计算空间。
我们首先看一下日志错误阶段,
本第报错日志通过日志观察实在STAGE2阶段的map阶段就报错,并没有到REDUCE阶段。
那我们就可以来看看这段SQL explain 执行计划,计划如下图
expalin执行计划发现第二阶段是发生inner join,就是在join阶段发生内存溢出,99%概率必然是发生倾斜或者笛卡尔积导致map阶段出现问题。
那我们该如何解决呢?是直接增加计算空间和并行度,我们要看一下SQL本身有没有问题
这段SQL如下
在这里插入图片描述从这段SQL,我们可以看出是两张表内关联,再通过对数据探查发现,第一张表为小表,第二张表为大表,并且第二张表过滤后又加DISTICT,这块会影响型能,但绝不是报错主要原因,后期对关联条件发现大表package大量重复,这原因就很明显,发生1对多现象,绝对发生了倾斜现象
那我们完全可以从代码层面进行优化。
优化SQL如下
优化后SQL对整体去重只需要一个job,采用开窗函数 row number over,并在最终希望获取的package在小表中,采用left semi join。
这样最终结果就跑成功了
在这里插入图片描述
遇到问题不要轻易就先通过设置参数进行解决

  • 首先先从代码进行优化
  • 其次再从设置参数 资源方面进行解决

关注老姜
哔哩账号:老姜的数据江湖
微信公众号:老姜的数据江湖
在这里插入图片描述

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]: 这个错误信息表明在执行HiveHQL语句时出现了错误,具体错误信息是"FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session"。引用\[2\]中提到了类似的问题,错的语句都是设置了"set hive.execution.engine=spark;"参数。原因是在yarn中有很多新增的任务,导致资源满了。引用\[3\]给出了解决方案,可以在Hive参数中添加一些配置来解决这个问题。具体的解决方案是在"hive-site.xml"的HiveServer2高级配置代码段中添加以下三个参数: hive.spark.client.connect.timeout=30000, hive.spark.client.server.connect.timeout=300000, hive.spark.client.future.timeout=1200。这些参数可以调整Spark客户端的连接和超时时间。 至于你提到的另一个错误"FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=2)",这个错误信息表明在执行HiveMapReduce任务时出现了错误。根据提供的引用内容,无法确定具体的原因和解决方案。如果你能提供更多的上下文信息或者错误日志,我可以帮助你更好地解决这个问题。 #### 引用[.reference_title] - *1* [hive-spark: Error while processing statement: FAILED: Execution Error, return code 30041 from org.ap](https://blog.csdn.net/TzBugs/article/details/108322762)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask.](https://blog.csdn.net/hcq_lxq/article/details/124136404)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值