hive mapjoin 内存溢出异常


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


<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 !
评论
 上一篇
1.[Java 基础]Java背景概述与开发环境部署 1.[Java 基础]Java背景概述与开发环境部署
1. Java 语言的发展史 1990 年: Sun 公司成立由高斯林领导的 “Green 计划” , 计划为下一代智能家电编写一个通用控制系统。 1992 年: Green计划完成了一部分功能 , 但是并没有使用原计划的 C++ 语言
2018-01-02
下一篇 
HDFS 中常见的数据格式 2.面向列的文件格式介绍 HDFS 中常见的数据格式 2.面向列的文件格式介绍
1. 列式存储列式存储, 顾名思义就是按照列进行存储, 把某一列的数据连续的存储, 每一行中的不同列的值离散分布, 列式存储技术并不新鲜, 在关系数据库中都已经在使用, 尤其是在针对OLAP场景下的数据存储, 由于OLAP场景下的数据大部分
2017-09-03
  目录