写点什么

大数据开发 join 的运行原理 _ 大数据培训

作者:@零度
  • 2022 年 2 月 24 日
  • 本文字数:731 字

    阅读完需:约 2 分钟

 基本描述

Hive 的 join 过程,即 hive 将 sql 的 join 转化为 mapreduce 来执行的过程。关键词主要有三个:执行计划、Shuffle join 和 map join。

因此回答本问题时,可以先回答 hive 是怎样执行 sql 的,再对 join 的过程进行说明。

当遇到让你结合例子来说明 join 过程的问题时,大数据培训根据总结选择性回答即可。

总结回答

1 简单解释 hive 解析 sql 到 mr

ok,首先 Hive 会根据 DQL 类 SQL 语句生成一个 MapReduce 作业。具体是通过 Driver 将 SQL 提交到编译器进行语法分析、解析和优化,最后生成一个 MapReduce 的执行计划,再根据执行计划,生成一个 MapReduce 作业。

2 概况 join 的类型

接着 hive 的 join 主要可以分为 Shuffle join 和 map join。两者的区别是:Shuffle join 是在 reduce 端完成的 join,map join 是在 map 端完成的 join。

3 shuffle join

MR 的 Shuffle join 的过程分为 map、shuffle 和 reduce:

  1. 首先是 map 过程,会由 map task 分别去读 A 表和 B 表。因为 join 要涉及两张表,因此要在 map 输出的时候进行标记。比如来自第一张表的输出 Value 就记录为 <1, X>,这里的 1 表示数据来自第一张表,key 值为 join 中 on 的关联条件;

  2. 接着是 Shuffle 过程,Shuffle 会将相同的 key 分发到相同的 reducer 中;

  3. 最后是 Reduce 过程,在 reduce 端完成真正的 join 操作。根据表的标记对 Value 数据求笛卡尔积,用第一张表的每条记录和第二张表的每条记录连接,输出就是 join 的结果。



4 map join

Hive 默认的是 map join。map join 的过程只有 map,其中 reduce 阶段在 map 中完成:

  1. 首先会把小表加载到缓存中。通过启动一个 mapReduce 的 local task,这个 task 会去读取小表的数据,然后生成一堆 hashtablefiles 文件,接着把这个文件放到 Distributed catch 分布式缓存;

  2. 接着 map task 会去读取大表数据,读取过程中直接与缓存做 join,没有 shuffle 过程。



文章来源于 Diting

用户头像

@零度

关注

关注尚硅谷,轻松学IT 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
大数据开发join的运行原理_大数据培训