Hive课程介绍
前言:Hive是数据仓库工具
MySQL基本知识回顾:
- DDL:数据定义语言
- 增删改查数据库/表
- create database 库名;
- dorp database 库名;
- create table 表名(字段 类型。。)
- drop table 表名
- DML:数据操作语言
- 对表数据的增删改
- insert into …
- delete …
- update …
- DCL:数据操纵语言
- DQL:数据查询语言
- 对表数据的查
- select * from 表名
Hive的语句:HQL:Hive sql:使用HQL写类sql语句,达到数据分析的目的,
数据仓库:存储数据的仓库,一般做集群,数据分析
hive包括以下内容:
- hive基本概念
- hive和数据库对比
- hive特点
- hive架构原理
- hive安装
- hive数据类型
- DDL:数据定义语言
- DML:数据操作语言
- DQL:数据查询语言
- 分区和分桶
- 分区表
- 分桶表
- hive函数
- 系统内置函数(自带)
- 自定义函数
- hive数据压缩
- hive优化
- hive综合案例
Hive基本概念
1、Hive简介
Hive:由 Facebook 开源用于解决海量结构化日志的数据统计工具
Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。
Hive本质:将HQL转换成Mapreduce程序,Hive的数据存储在HDFS里面,
mysql和hive的对比:
数据库MySQL:存储数据的仓库,单个机器能够存储的数据量小, 可以增删改查数据 引擎:InnDB
数据仓库Hive:存储数据的仓库,一般集群部署,存储的数据量大,可以增删改查数据 引擎:MapReduce
sql语言:是数据库的语言,结构化查询语言
- Hive 处理的数据存储在 HDFS
- Hive 分析数据底层的实现是 MapReduce
- 执行程序运行在 Yarn 上
2、Hive优缺点
优点:
- 能够存的数据比传统的数据库大
- 不用去写复杂的MapReduce代码了
- 容错性高…
缺点:
- 运行速度慢,效率低
- 不是所有的MR程序都能用Hive去写(所有的Hive语句都可以好用MR去写)
3、Hive架构原理
- 1) 用户接口: Client
CLI(command-line interface)、 JDBC/ODBC(jdbc 访问 hive)、 WEBUI(浏览器访问 hive) - 元数据: Metastore
元数据包括:表名、表所属的数据库(默认是 default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等
HDFS 的元数据:将Linux本地文件和HDFS文件系统做映射,建立映射关系
HIVE元数据:将HDFS的元数据和HIVE的表做映射
- Hadoop
使用 HDFS 进行存储,使用 MapReduce 进行计算 - 驱动器: Driver
- 解析器(SQL Parser):将 SQL 字符串转换成抽象语法树 AST,这一步一般都用第三方工具库完成,比如 antlr;对 AST 进行语法分析,比如表是否存在、字段是否存在、 SQL语义是否有误。
- 编译器(Physical Plan):将 AST 编译生成逻辑执行计划。
- 优化器(Query Optimizer):对逻辑执行计划进行优化。
- 执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于 Hive 来说, 就是 MR/Spark。
Hive 通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的 Driver,结合元数据(MetaStore),将这些指令翻译成 MapReduce,提交到 Hadoop 中执行,最后,将执行返回的结果输出到用户交互接口
4、Hive和数据库的比较
- 查询语言:
- 数据的语言叫做sql(结构化查询语言)
- hive的语言叫做hql(hive sql)
- 数据更新
- 数据库一般存储业务数据,数据库中的数据通常频繁的更新
- hive作为数据仓库,主要通过写hql做数据分析,虽然可以修改hive中的数据,但是一般不会这样做
- 执行延迟
- 数据库的CRUD(增删改查)操作延迟很小,通常在几毫秒
- hive的底层是引擎是MR,执行延迟慢很多
- 数据规模
- 数据库单机存储量较小,(可以做集群)
- 数据仓库一般为集群部署,数据规模可以无限扩展