hive mapjoin 内存溢出异常


1. 问题描述

在hive中两张表进行join操作时有时会出现如下错误:

1
2
3
4
5
6
Total MapReduce jobs = 4

2014-10-22 05:45:06 Starting to launch local task to process map join; maximum memory = 1065484288

2014-10-22 05:45:42 Processing rows: 200000 Hashtable size: 199999 Memory usage: 82761296 percentage: 0.078

出现错误的原因是 任务在进行join操作时转换mapjoin将小表放进内存导致内存溢出。

2. 解决办法:

解决办法由两种,一个是将自动mapjoin 转换关闭,另外一个是将内存调大:

2.1. 关闭自动mapjoin 转换

修改配置文件 关闭mapjoin

vim hive-site.xml

1
2
3
4
5
6

<property>
<name>hive.auto.convert.join</name>
<value>false</value>
</property>

2.2. 将内存增大

hive.mapjoin.smalltable.filesize 默认值是25MB

修改内存大小

set mapreduce.map.memory.mb=2049;

set mapreduce.reduce.memory.mb=20495;

set hive.auto.convert.join=true;


文章作者: hnbian
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 hnbian !
评论
  目录