`
x10232
  • 浏览: 55538 次
  • 来自: 北京
社区版块
存档分类
最新评论

Hive Map Side Join解析

    博客分类:
  • hive
阅读更多

通常Hadoop在做join策略的时候会有两种方式map-side join(也叫replication join)和reduce-side join(也叫repartition join或者common join)

 

1.  reduce side join

 

利用了mapreduce框架的sort-merge机制来使得相同key的数据聚合在一起,在map阶段会分别读取输入dataset,然后根据join key来分发每条记录(其他值包装在value中),在reduce阶段读取所有同一个join key对应的所有记录后,就可以做笛卡尔积,然后将结果再emit出去。

 

2.  map side join

 

如果一部分输入dataset size比较小的话,可以将这部分数据replicate到所有的map端(利用DistributedCache拷贝到各个map host上),在map task执行的时候,会先将这部分数据(小表)读入memory中,每次在map函数遍历大表的时候,会查找memory中对应相同join key的记录集,然后做join。

 

Hive执行map side join的策略

 

Hive在Compile阶段的时候对每一个common join会生成一个conditional task,并且对于每一个join table,会假设这个table是大表,生成一个mapjoin task,然后把这些mapjoin tasks装进conditional task(List<Task<? extends Serializable>> resTasks),同时会映射大表的alias和对应的mapjoin task。在runtime运行时,resolver会读取每个table alias对应的input file size,如果小表的file size比设定的threshold要低 (hive.mapjoin.smalltable.filesize,默认值为25M),那么就会执行converted mapjoin task。对于每一个mapjoin task同时会设置一个backup task,就是先前的common join task,一旦mapjoin task执行失败了,则会启用backup task

 

流程图:

 

 

 

 

 

 

 

 

 

原文链接:http://blog.csdn.net/lalaguozhe/article/details/9082921

 

分享到:
评论

相关推荐

    SQL、Hive SQL等SQL血缘解析工具

    String hql = "select id,name from (select id from table_1 where id={p0}) t1 inner join (select name --this is name\n from table_2) t2"; // 获取id字段的血缘 LineageNode idNode = Delegate.getDelegate...

    基于 Antlr4 的 Hive SQL 解析.zip

    基于 Antlr4 的 Hive SQL 解析.zip 大学生课程设计 课程设计 自己大二写的课程设计

    hive sql + left join 数据缺失

    hive sql + left join 数据缺失

    06.hive中的json解析函数--json-tuple.mp4

    06.hive中的json解析函数--json-tuple.mp4

    hive sql解析

    hivesql解析 支持版本&lt;!--&lt;hive.version&gt;1.0.0&lt;/hive.version&gt; &lt;hadoop.version&gt;2.4.1&lt;/hadoop.version&gt; --&gt; &lt;hive.version&gt;2.0.1&lt;/hive.version&gt; &lt;hadoop.version&gt;2.7.2&lt;/hadoop.version&gt;

    Hive Summit 2011-join

    facebook hive中的各种join策略的slides,reporter是个Chinese。

    C++解析windows注册表hive文件

    C++直接解析注册表文件,不用注册表API.

    Hive on Spark EXPLAIN statement

    Hive on Spark EXPLAIN statement : 讲述了 Common Join / Map join / Bucket Map Join / Sorted Merge Bucket Map Join / skew join 在explain 中的 树结构 。In Hive, command EXPLAIN can be used to show the ...

    hadoop2.x、Hive、HBase源码解析+企业级应用

    hadoop2.x、Hive、HBase源码解析+企业级应用视频,本人花钱买的视频,全部的还没有看,如果感觉老师讲的不好,请不要碰我,谢谢

    HiveSQL解析原理.docx

    HiveSQL解析原理

    hive解析用户名和密码的jar包

    hive解析用户名和密码的jar包

    hive性能优化

    一个Hive查询生成多个map reduce job,一个map reduce job又有map,reduce,spill,shuffle,sort等多个阶段,所以针对hive查询的优化可以大致分为针对M/R中单个步骤的优化,针对M/R全局的优化,和针对整个查询(多M...

    hive-udf(两地址间距离计算+省市区位置解析(Java代码))

    地址转换成经纬度+两地址间距离计算+省市区位置解析(Java代码) Hive自定义函数的封装

    hive 中join和Group的优化

    set hive.map.aggr = true; //是否在 Map 端进行聚合,默认为 True ;该设置会消耗更多的内存。 set hive.groupby.mapaggr.checkinterval = 100000000; //在 Map 端进行聚合操作的条目数目 set hive.groupby....

    使用Hive进行join查询的时报错

    NULL 博文链接:https://weigang-gao.iteye.com/blog/2260663

    HiveSqlBloodFigure:hive血缘关系解析工具

    删除hive-exec与hadoop-common的maven依赖,使得项目更加的轻量级。 重构项目代码,优化解析,修复无字段血缘时,不能获取表血缘的BUG。 规范化接口输入输出,血缘图均为自定义实体,方便进行JSON序列化。 新增接口...

    分布式数据仓库Hive大全

    7. HIVE 的MAP/REDUCE 41 7.1 JOIN 41 7.2 GROUP BY 42 7.3 DISTINCT 42 8. 使用HIVE注意点 43 8.1 字符集 43 8.2 压缩 43 8.3 count(distinct) 43 8.4 JOIN 43 8.5 DML操作 44 8.6 HAVING 44 8.7 子查询 44 8.8 ...

    Hive用户指南

    7. HIVE 的MAP/REDUCE 41 7.1 JOIN 41 7.2 GROUP BY 42 7.3 DISTINCT 42 8. 使用HIVE注意点 43 8.1 字符集 43 8.2 压缩 43 8.3 count(distinct) 43 8.4 JOIN 43 8.5 DML操作 44 8.6 HAVING 44 8.7 子查询 44 8.8 ...

    Hive - A Warehousing Solution Over a Map-Reduce.pdf

    Hadoop [3] is a popular open-source map-reduce im- plementation which is being used as an alternative to store and process extremely large data sets on commodity hard- ware. However, the map-reduce ...

    hive

    hive hive hive hive hive hive hive hive hive hive hive hive

Global site tag (gtag.js) - Google Analytics