最近开发中遇到几种应用,刚好使用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 随谈(四)– Hive QL

hive使用经验

hive使用适用场景_Hive 中 Map Join 的适用场景:非等值连接相关推荐

  1. 关于hive中Map join 时大表left join小表的问题

    在hive中,(启用Map join时) 大表left join小表,加载从右向左,所以小表会加载进内存,存储成map键值对,通过大表驱动小表,来进行join,即大表中的join字段作为key 来获取 ...

  2. mysql hive 内置函数_Hive中与时间相关的内置函数

    (1)获取当前的时间戳(以秒位单位):unix_timestamp(),返回值类型位BIGINT.例如: select unix_timestamp() from dim_user limit 1; ...

  3. hive 表存储大小_Hive中文件存储格式及大小比较测试

    在hive中创建表是有如下一个语句 [ROW FORMAT row_format] row_format 的类型有如下: file_format: : SEQUENCEFILE | TEXTFILE ...

  4. hive mysql hdfs关系_Hive中的数据库、表、数据与HDFS的对应关系

    1.hive数据库 我们在hive终端,查看数据库信息,可以看出hive有一个默认的数据库default,而且我们还知道hive数据库对应的是hdfs上面的一个目录,那么默认的数据库default到底 ...

  5. hive查勘表结构_Hive中的数据库、表、数据与HDFS的对应关系

    1.hive数据库 我们在hive终端,查看数据库信息,可以看出hive有一个默认的数据库default,而且我们还知道hive数据库对应的是hdfs上面的一个目录,那么默认的数据库default到底 ...

  6. python中map,join,int结合在一起的用法

    python学习之路 关于map函数的用法 今天我在使用codewars进行代码练习的时候发现有个题目很有意思: 给定一个由1和0组成的数组,将等效的二进制值转换为整数. 例如:[0,0,0,1]被视 ...

  7. MR实现reduce join和map join及hive的执行计划

    一.涵盖 MapReduce InputFormat RecordReader 切片:block=input split 1.1 File- Text- NLine- DB- Mapper setup ...

  8. jemeter多场景混合案例_Jmeter多业务混合场景如何设置各业务所占并发比例

    在进行多业务混合场景测试中,需要分配每个场景占比. 具体有两种方式: 1.多线程组方式: 2.逻辑控制器控制: 第一种: jmeter一个测试计划可以添加多个线程组,我们把不同的业务放在不同的线程组中 ...

  9. Hive中的map join、left semi join和sort merge bucket join

    map join map join是将join双方比较小的表直接分发到各个 map进程的内存中,在map进程中进行join操作,这样就不用进行reduce步骤,从而提高了速度. 如果不指定mapjoi ...

最新文章

  1. App社交分享的后续行为可以这样统计
  2. Direct3D提高篇:HLSL编程实现PhotoShop滤镜效果(1)
  3. nginx + uWSGI 提高 Django的并发性(看着不错)
  4. 团队软件库_深情软件库App最新版下载_深情软件库手机版2021下载
  5. mysql的service name_【Oracle】service_name和service_names的关系
  6. 学习记录—HTML标签
  7. disruptor流程
  8. 毕业照还可以这样玩()
  9. 《管理的实践》全书结构
  10. matlab x对数坐标,matlab 对数坐标
  11. Windows系统重装教程
  12. CSS 布局案例:不会还有人不会布局吧
  13. 支持跨平台的移动开发工具大盘点!
  14. webpack Uncaught ReferenceError: Swiper is not defined
  15. CSS粘性定位(sticky)
  16. repr函数输出调试信息
  17. 计算机网络——传输层の选择题整理
  18. python狗品种识别_卷积神经网络(CNN)项目,给你一个狗的图像,你的算法将会识别并估计狗的品种...
  19. 事与愿违!Google PR更新后的感悟!
  20. 证券中 A、B、C、D字头账号分别代表什么?

热门文章

  1. linux 查看触摸屏信息,英创信息技术eGalax触摸屏在Linux/X11下的标定方法
  2. python中函数包括参数函数吗_Python中的函数---函数的定义和参数
  3. 自动化系统计算机网络期末考试题,模拟试卷_计算机网络试题B-自动化-孙璐
  4. mysql的基本数据类型总结_Mysql数据类型的详细总结
  5. scrapy setting配置
  6. 唐山师范学院计算机宿舍,唐山师范学院宿舍条件怎么样宿舍图片内景
  7. 利用开放定址法实现散列表的创建、插入、删除、查找操作_散列表和IO
  8. sparksql 操作hive_Spark SQL 物化视图原理与实践
  9. C# ToString()和Convert.ToString()的区别【转】
  10. 分治法:归并排序求逆序对