栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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

遇到问题不要轻易就先通过设置参数进行解决

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号