微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

hive 报错Starting to launch local task to process map join; maximum memory = 518979584 Exception

在这里插入图片描述

Starting to launch local task to process map join; maximum memory = 518979584
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

mapjoin的时候 OOM了。
MapJoin简单逻辑:读取小文件,缓存到distributeCache 再从cache里边读,和大表进行关联。
简单来说就是这边把表读到内存中,内存塞不下了爆了OOM了。
解决办法一修改内存:
去目录位置:hadoop/etc/hadoop
vi hadoop-env.sh
修改如图内容认为512m改成1024m

在这里插入图片描述

重启hadoop
stop-all.sh
start-all.sh
hdfs dfsadmin -safemode leave
重进hive
重新执行 ok

https://www.freesion.com/article/12651150709/

解决办法二:关闭mapjoin
在hive命令行:
set hive.auto.convert.join=false;
方法二简单直接过。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐