【Hive】性能调优 - map-side JOIN
Hive版本: hive-1.1.0-cdh5.14.2
概述
如果表关联时,有一张表很小,那么可以在大表通过mapper时将小表完全加载到内存中,Hive可以在map端完成关联过程,这就是所谓的map-side JOIN。
使用map-side JOIN可以省掉常规的reduce过程,从而提升Hive的效率。
Hive中有三个和map-side JOIN相关的参数:
参数 | 默认值 |
---|---|
hive.auto.convert.join | true (Hive 0.11.0+) |
hive.auto.convert.join.noconditionaltask | true |
hive.auto.convert.join.noconditionaltask.size | 10000000(10M) |
如果想使用map-side JOIN,重点关注hive.auto.convert.join.noconditionaltask.size就可以了,可以认为如果小表的大小超过此参数的值(默认10M),Hive就不会自动优化为map-side JOIN。但可以根据节点的实际内存大小,合理调整此参数值。
Hive官方文档对参数有如下解释:
注意:
由于map-side JOIN只能流化一个表到内存,而全外连接( Full Outer join)需要关联后两张表的数据,所以暂不能使用此优化。
测试
下面是对hive.auto.convert.join.noconditionaltask.size的简单测试:
测试环境中有两张表youtubevideo_orc(132.42M),youtubevideo_user_orc(17.33M)
1. hive.auto.convert.join.noconditionaltask.size不做调整
因以上二表的任一个都大于此参数的默认值(10M),所以Hive会执行reduce-side JOIN,而非map-side JOIN。
0: jdbc:hive2://node03:10000> explain select t1.uploader,t2.friends from youtubevideo_orc t1
. . . . . . . . . . . . . . > join youtubevideo_user_orc t2 on t1.uploader = t2.uploader
. . . . . . . . . . . . . . > limit 10;
在执行计划中可以看出,Hive依然执行了reduce过程:
2. hive.auto.convert.join.noconditionaltask.size调整为20M
因youtubevideo_user_orc(17.33M),符合小于hive.auto.convert.join.noconditionaltask.size的值,所以Hive会自动调整为map-side JOIN。
0: jdbc:hive2://node03:10000> set hive.auto.convert.join.noconditionaltask.size = 20000000;
No rows affected (0.005 seconds)
0: jdbc:hive2://node03:10000> explain select t1.uploader,t2.friends from youtubevideo_orc t1
. . . . . . . . . . . . . . > join youtubevideo_user_orc t2 on t1.uploader = t2.uploader
. . . . . . . . . . . . . . > limit 10;
在执行计划中可以看出,Hive只执行map,而没有reduce过程(非重要部分已在截图中省略):
3. Full Outer Join不会使用map-side JOIN
关联方式改为Full Outer Join后,即使hive.auto.convert.join.noconditionaltask.size调整为20M,Hive依然使用reduce-side JOIN,而非map-side JOIN。
0: jdbc:hive2://node03:10000> set hive.auto.convert.join.noconditionaltask.size = 20000000;
0: jdbc:hive2://node03:10000> explain select t1.uploader,t2.friends from youtubevideo_orc t1
. . . . . . . . . . . . . . > full outer join youtubevideo_user_orc t2 on t1.uploader = t2.uploader
. . . . . . . . . . . . . . > limit 10;
总结
map-side JOIN可以省掉reduce过程,从而提高Hive效率;
Hive 0.11.0版本后,默认开启自动map-side JOIN优化,我们需要合理调整hive.auto.convert.join.noconditionaltask.size参数值。
【Hive】性能调优 - map-side JOIN相关推荐
- 3万字史诗级 Hive 性能调优(建议收藏)
前言 Hive 作为大数据领域常用的数据仓库组件,在平时设计和查询的时候要特别注意效率 .影响 Hive 效率的几乎从不是数据量过大,而是数据倾斜.数据冗余.Job或I/O过多.MapReduce 分 ...
- Hive性能调优实战 分享
获取方式 链接:https://pan.baidu.com/s/1TmkWssL1K45af7GDrj2QWw 提取码:26uv 关注我的公众号[宝哥大数据],更多干货 目录 第1章 举例感受Hive ...
- hive性能调优实战pdf_Nginx 性能调优实战
来自:Linux社区 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpui ...
- hive性能调优实战pdf_1分钟带你入门JVM性能调优,实战解析调优工具
JVM的运行参数 1.1 三种参数类型 标准参数 help -version -X参数 (非标准参数) -Xint -Xcomp -XX参数(使用率比较高, 常用语jvm调优) -XX:newSize ...
- 真正让你明白Hive参数调优系列1:控制map个数与性能调优参数
本系列几章系统地介绍了开发中Hive常见的用户配置属性(有时称为参数,变量或选项),并说明了哪些版本引入了哪些属性,常见有哪些属性的使用,哪些属性可以进行Hive调优,以及如何使用的问题.以及日常Hi ...
- 【大数据开发】SparkSQL——Spark对接Hive、Row类、SparkSQL函数、UDF函数(用户自定义函数)、UDAF函数、性能调优、SparkSQL解决数据倾斜
文章目录 一.Spark对接Hive准备工作 1.1 集群文件下载 1.2 导入依赖 1.3 打开集群metastore服务 二.Spark对接Hive 2.1 查询Hive 2.2 读取MySQL中 ...
- Apache Spark Jobs 性能调优(一)
Apache Spark Jobs 性能调优(一) Spark 是如何执行程序的 选择正确的 Operator 什么时候不发生 Shuffle 什么情况下 Shuffle 越多越好 二次排序 结论 当 ...
- 大数据培训:Spark性能调优与参数配置
Spark性能调优-基础篇 众所周知,正确的参数配置对提升Spark的使用效率具有极大助力,帮助相关数据开发.分析人员更高效地使用Spark进行离线批处理和SQL报表分析等作业. 推荐参数配置模板如下 ...
- 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例
大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...
- Hive SQL调优
1.背景 目前数据存在的问题 1.用户使用场景集中在上班高峰时间 2.SQL质量需要调整/调优 2.目标 总结通用的SQL优化方式进行推广 3.优化方式 目前hive版本2.3.5,执行引擎是Tez ...
最新文章
- 如何制作自己的CocoaPod库
- 物种丰度排序堆积柱形图及处理间各物种差异分析
- 【网络基础】Mime Type
- Creating a Jabber Client using the agsXMPP Library
- 直正的互联网产品设计:七个作为产品经理实际上很重要的”小事“
- 想换工作?阿里技术战略部招人啦!
- java获取map大小_java – 从HashMap获取最大Set大小
- TabControl控件用法图解
- DELL 控制卡做raid
- oracle时间间隔分钟数,如何掌握Oracle 中的时间间隔型数据
- CocosCreator2.3.1按钮节点防止多次连续点击
- 根据单头价格清单(核价单),更新单身出货明细的单价
- 深度模型训练之learning rate
- mysql5.7优化
- 社交软件红包技术解密(十):手Q客户端针对2020年春节红包的技术实践
- ImageMagick将多张图片拼接成一张图片_今天才发现,微信按下“这个”按钮,能将手机里的照片拼接成长图...
- 堆晶结构_火成堆晶成因的超镁铁质岩
- 团队作业-Beta冲刺(周四)
- 微信小程中文特殊字符编码与解码
- (24) T-GCN-时间图卷积网络用于交通预测
热门文章
- java 同步原语_你所不知道的有关Java 和Scala中的同步问题
- Cocos2dx 之 ButtonSprite
- C#利用WCF改进文件流传输的三种方式
- ubuntu使用python opencv_Ubuntu中“利用Opencv + python进行特征匹配”的环境搭建
- explain分析sql效果
- Codepen 每日精选(2018-3-29)
- Kakao Talk母公司第四季净利润暴跌80%
- 怎么理解Condition
- Unix环境高级编程笔记:12、高级IO
- 讲解开源项目:让你成为灵魂画手的 JS 引擎:Zdog