Hive中的Map join 简单了解

本文介绍了Hive中的MapJoin,这是一种针对Reduce join的优化策略。内容包括MapJoin的概念、基本工作原理、相关参数配置以及适用的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive中的join可以分为Map join与Reduce join(也叫Common join或Shuffle join),Map join是相对于Reduce join的一种优化。

什么是MapJoin

MapJoin是在Map阶段进行表之间的连接,而不需要进入到Reduce阶段才进行连接,
这样省去Shuffle和Reduce的过程,大大降低了Job的运行时间。

MapJoin的基本原理

简单来说:
先将小表加载到程序的内存中,再和Map出来的表进行join,从而加快join的执行速度。

MapJoin的相关参数设置

在hive0.7.0到0.10.0版本,参数 hive.auto.convert.join 默认是false
在hive0.11.0到之后的版本,参数 hive.auto.convert.join 默认是ture
可以在命令行工具中 set hive.auto.convert.join = ture 开启自动MapJoin转换
默认hive.mapjoin.smalltable.filesize = 25000000 默认小表最大25M

注意:
如果 set hive.auto.convert.join = ture 之后 MapJoin不起作用,可以尝试以下操作
hive.auto.convert.join = false
hive.ignore.mapjoin.hint = false

MapJoin适用的场景

 1. 并不是所用场景都适合用MapJoin
 2. 在表的join中要有一个小表,小表可以放在内存中而不影响性能
 3. 需要进行不等值join操作
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值