Hive作业中某个表为inner join关系则会fail但left join则正常?

a.Hive:多表关联:

> 主表与从表1:inner join

> 其余从表:left join

> count(1):最大的表条数:1726276,最小的:38条

> 执行该hive作业后,大概10分钟后就会fail,具体报错日志:

FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.OutOfMemoryError: GC overhead limit exceeded

b.解决方法:

> 通过日志可定位到是主表与从表1:inner join的时候fail掉了,有尝试过将从表1以及相关的涉及到的字段注释掉,结果是正常运行得;

> 从表1与主表仍为:inner join的关系:尝试过将select后的字段全部注释掉,只:count(1),正常执行,结果显示的条数与主表接近;

> 最后将主表与从表1的关联关系:修改:left join,发现就可以正常执行了,select后面跟的字段,也就可以正常显示出来了

 

你这个主要是内存不足引起的问题,跟left join,inner join没有关系。

但确实是我将 inner join修改成left join后:就可以正常执行了.. 后来定位到可能跟mapjoin自动优化有关系;set hive.auto.convert.join=false; 之后,就可以正常执行了。也不会报内存不足的问题了。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y