【Hive】(十六)Hive 执行过程实例分析

简介: 【Hive】(十六)Hive 执行过程实例分析

文章目录


一、Hive 执行过程概述

1、概述

2、Hive 操作符列表

3、Hive 编译器的工作职责

4、优化器类型

二、JOIN

1、对于 JOIN 操作

2、实现过程

3、具体实现过程

三、Group By

1、对于 group by操作

2、实现过程

四、Distinct

1、对于 distinct的操作

2、实现过程

3、详细过程解释


一、Hive 执行过程概述


1、概述


(1) Hive 将 HQL 转换成一组操作符(Operator),比如 GroupByOperator,JoinOperator 等


(2)操作符 Operator 是 Hive 的最小处理单元


(3)每个操作符代表一个 HDFS 操作或者 MapReduce 作业


(4)Hive 通过 ExecMapper 和 ExecReducer 执行 MapReduce 程序,执行模式有本地模式和分布式两种


20200128202503444.png


2、Hive 操作符列表


2020012820285526.png


3、Hive 编译器的工作职责


(1)Parser:将 HQL 语句转换成抽象语法树(AST:Abstract Syntax Tree)


(2)Semantic Analyzer:将抽象语法树转换成查询块


(3)Logic Plan Generator:将查询块转换成逻辑查询计划


(4)Logic Optimizer:重写逻辑查询计划,优化逻辑执行计划


(5)Physical Plan Gernerator:将逻辑计划转化成物理计划(MapReduce Jobs)


(6)Physical Optimizer:选择最佳的 Join 策略,优化物理执行计划


4、优化器类型


20200128203116432.png


上表中 ① 的优化目的都是尽量将任务合并到一个 Job 中,以减少 Job 数量

② 的优化目的是尽量减少 shuffle 数据量。


二、JOIN


1、对于 JOIN 操作


SELECT pv.pageid, u.age FROM page_view pv JOIN user u ON pv.userid = u.userid;


2、实现过程


Map:


1、以 JOIN ON 条件中的列作为 Key,如果有多个列,则 Key 是这些列的组合


2、以 JOIN 之后所关心的列作为 Value,当有多个列时,Value 是这些列的组合。在 Value 中还会包含表的 Tag 信息,用于标明此 Value 对应于哪个表


3、按照 Key 进行排序


Shuffle:


1、根据 Key 的值进行 Hash,并将 Key/Value 对按照 Hash 值推至不同对 Reduce 中


Reduce:


1、 Reducer 根据 Key 值进行 Join 操作,并且通过 Tag 来识别不同的表中的数据


3、具体实现过程


20200128204151828.png


20200128204143608.png


三、Group By


1、对于 group by操作

SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age;


2、实现过程


20200128211953424.png


20200128212000498.png


四、Distinct


1、对于 distinct的操作


按照 age 分组,然后统计每个分组里面的不重复的 pageid 有多少个。

SELECT age, count(distinct pageid) FROM pv_users GROUP BY age;


2、实现过程


20200128212052952.png


3、详细过程解释


该 SQL 语句会按照 age 和 pageid 预先分组,进行 distinct 操作。然后会再按 照 age 进行分组,再进行一次 distinct 操作。

目录
相关文章
|
7月前
|
SQL HIVE
Hive LAG函数分析
Hive LAG函数分析
86 0
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析
48 2
|
6月前
|
SQL 数据采集 数据可视化
基于Hive的招聘网站的大数据分析系统
基于Hive的招聘网站的大数据分析系统
137 2
|
6月前
|
SQL 关系型数据库 MySQL
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
205 0
|
7月前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
1011 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
7月前
|
SQL HIVE UED
【Hive SQL 每日一题】分析电商平台的用户行为和订单数据
作为一名数据分析师,你需要分析电商平台的用户行为和订单数据。你有三张表:`users`(用户信息),`orders`(订单信息)和`order_items`(订单商品信息)。任务包括计算用户总订单金额和数量,按月统计订单,找出最常购买的商品,找到平均每月最高订单金额和数量的用户,以及分析高消费用户群体的年龄和性别分布。通过SQL查询,你可以实现这些分析,例如使用`GROUP BY`、`JOIN`和窗口函数来排序和排名。
350 2
|
7月前
|
SQL 数据可视化 关系型数据库
【大数据实训】基于Hive的北京市天气系统分析报告(二)
【大数据实训】基于Hive的北京市天气系统分析报告(二)
202 1
|
SQL Java 关系型数据库
hive中 sql执行过程
hive中 sql执行过程
127 0
|
SQL 数据挖掘 HIVE
Hive数据仓库维度分析
Hive数据仓库维度分析
163 0
|
SQL 机器学习/深度学习 存储
Hadoop生态系统中的数据查询与分析技术:Hive和Pig的比较与应用场景
Hadoop生态系统中的数据查询与分析技术:Hive和Pig的比较与应用场景