• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

hive计算,报错FAILED: return code 3 fromorg.apache.hadoop.hive.ql.exec.mr.MapredLocalTask

武飞扬头像
夏末将至LL
帮助1

问题:在运行hivesql的时候,可能会碰到错误代码:

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

环境:hive使用的MR引擎计算的。

原因:开启了hive的mapjoin,(设置参数数hive.auto.convert.join=true 默认开启)在map端就会进行表的join,

可以省略reduce阶段,时效更快,但是需要足够的内存,因为在map端join,需要其中一张表在每一个map中都有完整的数据,才能和另外一张表分布在map中的数据关联,如果内存不够,就会报这个错。

mapjoin的过程:

通过MapReduce Local Task,将小表读入内存,生成HashTableFiles上传至Distributed Cache中,这里会HashTableFiles进行压缩。MapReduce Job在Map阶段,每个Mapper从Distributed Cache读取HashTableFiles到内存中,顺序扫描大表,在Map阶段直接进行Join,将数据传递给下一个MapReduce任务。

Map阶段进行表之间的连接。而不需要进入到Reduce阶段才进行连接。这样就节省了在Shuffle阶段时要进行的大量数据传输。从而起到了优化作业的作用。

解决措施:

1、在hivesql的时候指定 hive.auto.convert.join=false

2、修改配置文件hive_conf.xml

 

<property>

<name>hive.auto.convert.join</name>

<value>false</value>//true修改为false

<description>Enables the optimization about converting common join into mapjoin</description>

</property>

mapjoin的使用方法以及注意事项参考链接

https://blog.csdn.net/sinat_37574187/article/details/120444216

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhghahfa
系列文章
更多 icon
同类精品
更多 icon
继续加载