资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

hive的执行流程

1. 执行流程概述

hive的执行流程
查看hive语句的执行流程:explain select ….from t_table …;

成都创新互联是网站建设技术企业,为成都企业提供专业的网站建设、网站制作,网站设计,网站制作,网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制适合企业的网站。十多年品质,值得信赖!

  • 查看hive语句的执行流程:explain select ….from t_table …;
  • 操作符是hive的最小执行单元
  • Hive通过execmapper和execreducer执行MapReduce程序,执行模式有本地模式和分布式模式
  • 每个操作符代表一个 HDFS 操作或者 MapReduce 作业
    hive的操作符
    hive的执行流程
    Hive编译器的工作职责
  • Parser:将Hql语句转换成抽像的语法书(Abstract Syntax Tree)
  • Semantic Analyzer:将抽象语法树转换成查询块
  • Logic Plan Generator:将查询树,转换成逻辑查询计划
  • Logic Optimizer:重写逻辑查询计划,优化逻辑执行计划
  • Physical Plan Gernerator:将逻辑执行计划转化为物理计划
  • Physical Optimizer:选择最佳的join策略,优化物理执行计划

2. Hive 工作原理

hive的执行流程
流程大致步骤为:

1. 用户提交查询等任务给Driver。

2. 编译器获得该用户的任务Plan。

3. 编译器Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。

4. 编译器Compiler得到元数据信息,对任务进行编译,先将HiveQL转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑的查询计划,重写逻辑查询计划,将逻辑计划转化为物理的计划(MapReduce), 最后选择最佳的策略。

5. 将最终的计划提交给Driver。

  1. Driver将计划Plan转交给ExecutionEngine去执行,获取元数据信息,提交给JobTracker或者SourceManager执行该任务,任务会直接读取HDFS中文件进行相应的操作。

7. 获取执行的结果。

8. 取得并返回执行结果。

3. hive的具体执行过程分析

(1)Join(reduce join)

例:SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON pv.userid = u.userid;
hive的执行流程
map 端:以 JOIN ON 条件中的列作为 Key,以page_view表中的需要字段,表标识作为value,最终通过key进行排序,也就是join字段进行排序。
shuffle端:根据 Key 的值进行 Hash,并将 Key/Value 对按照 Hash 值推 至不同对 Reduce 中
reduce 端:根据key进行分组,根据不同的表的标识,拿出不同的数据,进行拼接。

(2)group by

例:SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age;
hive的执行流程
map 端
key:以pageid, age作为key,并且在map输出端有combiner。
value :1次
reduce 端:对value进行求和

(3)distinct

例:select distinct age from log;
map端
key:age
value:null
reduce端
一组只要一个输出context.write(key,null)。

(4)distinct+count

例:select count(distinct userid) from weibo_temp;
即使设置了reduce个数为3个,最终也只会执行一个,因为,count()是全局,只能开启一个reducetask。
map端
key:userid
value: null
reduce端
一组只要一个,定义一个全局变量用于计数,在cleanup(Context context) 中输出context.write(key,count)
当然distinct+count是一个容易产生数据倾斜的做法,应该尽量避免,如果无法避免,那么就使用这种方法:
select count(1) from (select distinct userid from weibo_temp); 这样可以并行多个reduce task任务,从而解决单节点的压力过大。


网站名称:hive的执行流程
本文来源:http://cdkjz.cn/article/ihdsdg.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220