HIVE中MAPJOIN可以使用的场景分析
浏览:2439次 出处信息
最近开发中遇到几种应用,刚好使用MAPJOIN来解决实际的问题。
应用共同点如下:
1: 有一个极小的表<1000行
2: 需要做不等值join操作(a.x < b.y 或者 a.x like b.y等)
这种操作如果直接使用join的话语法不支持不等于操作,hive语法解析会直接抛出错误
如果把不等于写到where里会造成笛卡尔积,数据异常增大,速度会很慢。甚至会任务无法跑成功~
根据mapjoin的计算原理,MAPJION会把小表全部读入内存中,在map阶段直接拿另外一个表的数据和内存中表数据做匹配。这种情况下即使笛卡尔积也不会对任务运行速度造成太大的效率影响。
而且hive的where条件本身就是在map阶段进行的操作,所以在where里写入不等值比对的话,也不会造成额外负担。
如此看来,使用MAPJOIN开发的程序仅仅使用map一个过程就可以完成不等值join操作,效率还会有很大的提升。
问题解决~~
示例代码如下:
1: select /*+ MAPJOIN(a) */
2: a.start_level, b.*
3: from dim_level a
4: join (select * from test) b
5: where b.xx>=a.start_level and b.xx
建议继续学习:
- 如何获取hive建表语句 (阅读:6932)
- Hive源码解析-之-词法分析器 parser (阅读:6578)
- HIVE中UDTF编写和使用 (阅读:5658)
- Hive的入口 -- Hive源码解析 (阅读:5487)
- Hive源码解析-之-语法解析器 (阅读:5098)
- 用hadoop hive协同scribe log用户行为分析方案 (阅读:4664)
- 几个HIVE的streaming (阅读:3980)
- 写好Hive 程序的五个提示 (阅读:3668)
- Impala与Hive的比较 (阅读:3666)
- Hive 随谈(一) (阅读:3228)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:挣值分析
后一篇:使用 luajit 的 ffi 绑定 zeromq >>
文章信息
- 作者:shicheng 来源: 量子数科院
- 标签: HIVE MAPJOIN
- 发布时间:2011-08-22 12:21:39
建议继续学习
近3天十大热文
-
[914] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[53] 如何保证一个程序在单台服务器上只有唯一实例( -
[52] 海量小文件存储 -
[52] 全站换域名时利用nginx和javascri -
[52] Innodb分表太多或者表分区太多,会导致内 -
[51] 用 Jquery 模拟 select -
[50] CloudSMS:免费匿名的云短信 -
[48] 分享一个JQUERY颜色选择插件
