irpas技术客

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

网络投稿 3216

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

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

关注老姜 哔哩账号:老姜的数据江湖 微信公众号:老姜的数据江湖


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #HQL # #return #code #2 #from #错误解决方案