1.异常
在hive中两张表进行join操作时有时会出现如下错误:
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
hive.auto.convert.join
false
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;