hive底层原理 sql执行过程_Hive原理总结(完整版)

目录

课程大纲(HIVE增强) 3

1. Hive基本概念 4

1.1 Hive简介 4

1.1.1 什么是Hive 4

1.1.2 为什么使用Hive 4

1.1.3 Hive的特点 4

1.2 Hive架构 5

1.2.1 架构图 5

1.2.2 基本组成 5

1.2.3 各组件的基本功能 5

1.3 Hive与Hadoop的关系 6

1.4 Hive与传统数据库对比 6

1.5 Hive的数据存储 6

2. Hive基本操作 7

2.1 DDL操作 7

2.1.1 创建表 7

2.1.2 修改表 9

2.1.3 显示命令 11

2.2 DML操作 11

2.2.1 Load 11

2.2.2 Insert 13

2.2.3 SELECT 15

2.3 Hive Join 18

2.5 Hive Shell使用进阶 21

2.5.1 Hive命令行 21

2.5.2. Hive参数配置方式 23

4. Hive函数 24

4.1内置运算符 24

4.2内置函数 24

4.3 Hive自定义函数和Transform 24

4.3.1自定义函数类别 24

4.3.2 UDF开发实例 24

4.3.3 Transform实现 25

5. Hive执行过程实例分析 26

5.1 JOIN 26

5.2 GROUP BY 26

5.3 DISTINCT 27

6. Hive使用注意点(各种小细节) 27

6.1字符集 27

6.2压缩 28

6.3 count(distinct) 28

6.4子查询 28

6.5 Join中处理null值的语义区别 28

6.6分号字符 29

6.7 Insert 29

6.7.1新增数据 29

6.7.2插入次序 30

6.7.3初始值 30

7. Hive优化技巧 31

7.1 HADOOP计算框架特性 31

7.2优化的常用手段概述 31

7.3全排序 32

7.3.1例1 32

7.3.2例2 34

7.4怎样写exist/in子句 36

7.5怎样决定reducer个数 36

7.6合并MapReduce操作 36

7.7 Bucket与Sampling 37

7.8  Partition优化 38

7.9 JOIN优化 39

7.9.1 JOIN原则 39

7.9.2  Map Join 39

7.10数据倾斜 40

7.10.1空值数据倾斜 40

7.10.2不同数据类型关联产生数据倾斜 41

7.10.3大表Join的数据偏斜 41

7.11合并小文件 42

7.12 Group By优化 43

7.12.1 Map端部分聚合: 43

7.12.2有数据倾斜的时候进行负载均衡 43

8. Hive实战 44

Hive实战案例1——数据ETL 44

需求: 44

数据示例: 44

实现步骤: 45

Hive实战案例2——访问时长统计 47

需求: 47

实现步骤: 47

Hive实战案例3——级联求和 48

需求: 48

实现步骤 48

课程大纲(HIVE增强)

Hive增强

HIVE基本概念

HIVE架构及运行机制

HQL-DDL基本语法

HQL-DML基本语法

HIVE的join

HIVE UDF函数

HIVE shell基本操作

HIVE 参数配置

HIVE 自定义函数和Transform

HIVE 执行HQL的实例分析

HIVE最佳实践注意点

HIVE优化策略

HIVE实战案例1

HIVE实战案例2

HIVE实战案例3

学习目标:

1、熟练掌握hive的使用

2、熟练掌握hql的编写

3、理解hive的工作原理

4、具备hive应用实战能力

1. Hive基本概念

1.1 Hive简介

1.1.1 什么是Hive

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

1.1.2 为什么使用Hive

直接使用hadoop所面临的问题

人员学习成本太高

项目周期要求太短

MapReduce实现复杂查询逻辑开发难度太大

为什么要使用Hive

操作接口采用类SQL语法,提供快速开发的能力。

避免了去写MapReduce,减少开发人员的学习成本。

扩展功能很方便。

1.1.3 Hive的特点

可扩展

Hive可以自由的扩展集群的规模,一般情况下不需要重启服务。

延展性

Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。

容错

良好的容错性,节点出现问题SQL仍可完成执行。

1.2 Hive架构

1.2.1 架构图

Jobtracker是hadoop1.x中的组件,它的功能相当于: Resourcemanager+AppMaster

TaskTracker 相当于:  Nodemanager  +  yarnchild

1.2.2 基本组成

用户接口:包括 CLI、JDBC/ODBC、WebGUI。

元数据存储:通常是存储在关系数据库如 mysql , derby中。

解释器、编译器、优化器、执行器。

用户接口主要由三个:CLI、JDBC/ODBC和WebGUI。其中,CLI为shell命令行;JDBC/ODBC是Hive的JAVA实现,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。

元数据存储:Hive 将元数据存储在数据库中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有MapReduce调用执行。

1.2.3 各组件的基本功能

1.3 Hive与Hadoop的关系

Hive利用HDFS存储数据,利用MapReduce查询数据

1.4 Hive与传统数据库对比

总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析

1.5 Hive的数据存储

1、Hive中所有的数据都存储在 HDFS 中,没有专门的数据存储格式(可支持Text,SequenceFile,ParquetFile,RCFILE等)

2、只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。

3、Hive 中包含以下数据模型:DB、Table,External Table,Partition,Bucket。

² db:在hdfs中表现为${hive.metastore.warehouse.dir}目录下一个文件夹

² table:在hdfs中表现所属db目录下一个文件夹

² external table:外部表, 与table类似,不过其数据存放位置可以在任意指定路径

普通表: 删除表后, hdfs上的文件都删了

External外部表删除后, hdfs上的文件没有删除,只是把文件删除了

² partition:在hdfs中表现为table目录下的子目录

² bucket:桶, 在hdfs中表现为同一个表目录下根据hash散列之后的多个文件, 会根据不同的文件把数据放到不同的文件中

1.6 HIVE的安装部署

1.6.1 安装

单机版:

元数据库mysql版:

1.6.2 使用方式

Hive交互shell

bin/hive

Hive thrift服务

启动方式,(假如是在hadoop01上):

启动为前台:bin/hiveserver2

启动为后台:nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &

启动成功后,可以在别的节点上用beeline去连接

v 方式(1)

hive/bin/beeline  回车,进入beeline的命令界面

输入命令连接hiveserver2

beeline> !connect jdbc:hive2//mini1:10000

(hadoop01是hiveserver2所启动的那台主机名,端口默认是10000)

v 方式(2)

或者启动就连接:

bin/

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值