首页 > 其他分享 >hive join 的工作机制

hive join 的工作机制

时间:2022-12-28 15:34:51浏览次数:33  
标签:Map Join hive key mr join 机制


目录

  • ​​hive join 简介​​
  • ​​hive join 的工作机制​​
  • ​​Common Join 工作机制​​
  • ​​Map Join 工作机制​​

hive join 简介

as we all know,hive会将HQL语句翻译成为mr任务,但:

  1. 如果多张表使用​​同一列​​做join,则被翻译成一个mr任务
  2. 如果多张表使用​​不同列​​​做join,则被翻译成多个mr任务
    (1)一个mr任务
SELECT a.val, b.val, c.val
FROM a
JOIN b ON (a.key = b.key1)
JOIN c ON (c.key = b.key1)

(2)多个mr任务

SELECT a.val, b.val, c.val
FROM a
JOIN b ON (a.key = b.key1)
JOIN c ON (c.key = b.key2)

一般来说,​​map过程负责分发数据,具体的join操作在reduce完成​​​。但如果多表基于不同的列做join,则​​无法在一轮mr任务中​​将相关数据分发到到同一个reducer中,所以对于多表join,hive会将前面的表结果,先缓存在reducer的内存中,然后让后面的表会流式进入reducer中,和其进行join

下边以一个mr任务,来解释hive join 的工作机制

hive join 的工作机制

Common Join 工作机制

Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join

Map阶段

先读取源表数据,然后经Map处理后进行输出,数据输出的形式为key/value,key为on条件中的某一列(如果Join有多个关联键,则以这些关联键的组合作为key),value为select或者where中需要用到的列(同时在value中还会包含表的Tag信息,用于标明此value对应哪个表)

Shuffle阶段

按照key进行hash,结果相同的被送往到同一reducer中

Reduce阶段

按照key完成join操作(期间通过Tag来识别不同表中的数据)

Map Join 工作机制

hive join 的工作机制_数据

  1. 先运行一个Task A,(它是一个Local Task,在客户端本地执行的Task),负责扫描小表b的数据,将其转换成一个HashTable的数据结构,并写入本地的文件中,之后将该文件加载到DistributeCache中
  2. 在运行一个Task B,该任务是一个没有Reduce的mr,启动MapTasks扫描大表a,根据a的每一条记录去和DistributeCache中b表对应的HashTable关联,并直接输出结果,由于MapJoin没有Reduce,所以由Map直接输出结果文件,有多少个Map Task,就有多少个结果文件


标签:Map,Join,hive,key,mr,join,机制
From: https://blog.51cto.com/u_14009243/5975081

相关文章

  • hive 视图
    目录​​hiveoutline​​​​hive视图简介​​​​hive视图优点​​​​hive视图创建​​hiveoutline​​链接​​hive视图简介hive中的视图(view)是一种虚拟表,只保存......
  • 转贴:浅析 Linux 的国际化与本地化机制
       Linux是一个国际化的操作系统,它的工具集和设备驱动程序均支持多语言操作。本文通过分析glibc中实现国际化和本地化机制的函数和命令工具集以及从程序开发者、翻译......
  • 关于left join、right join和join 区别
    leftjoin以表一为主查询结果为表一全部数据和与表二有关联的交集数据 select*from表一leftjoin表二on表一条件=表二条件rightjoin以表二为主查询结......
  • hrnet的get_joint
    他的第18个keypoint存的是平均坐标。defget_joints(self,anno):num_people=len(anno)area=np.zeros((num_people,1))joints=np.zeros(......
  • 在k8s集群中Kubernetes仪表板dashboard使用RABC机制限制指定用户针对指定名称空间中的
    公众号关注「WeiyiGeek」本章目录:Dashboard-利用rbac机制限制指定用户针对指定名称空间中的资源进行UI管理(2)Dashboard-利用rbac机制限制指定用户针对指定名称空间中的资......
  • 易基因|深度综述:癌症中RNA修饰机制的遗传和表观遗传失调(m6A+m1A+m5C+ψ)
    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。2022年11月12日,《TrendsGenet》杂志发表了题为“GeneticandepigeneticdefectsoftheRNAmodifica......
  • Hive 连续登录问题
    需求说明有以下一个表,记录了用户登录数据desctemp_user_login;day_idstringuser_idintif_loginintselect*fromtemp_user_loginorderbyuser_id,da......
  • Hive 自定义函数
    Hive自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UD......
  • python进程之进程池、线程池与异步回调机制
    fromconcurrent.futuresimportProcessPoolExecutor,ThreadPoolExecutorimportosimporttimeimportrandom#1.产生含有固定数量线程的线程池#t_pool=Thread......
  • win32编程 -- 消息机制(二)
    我知道你最近很累,是那种看不见的身体上精神上的以及对未来的那种无力感,但请一定要坚持下去。。。---- 网易云热评 一、消息的获取1、GetMessage:从系统获取消息,将消息从系......