Hive入门篇

目录

一、数据仓库介绍

1、数据仓库的特点

2、数据仓库的基础架构

二、Hive基本概念

1. Hive是什么

2. Hive的优缺点

3. Hive和数据库比较

4. Hive的架构原理

三、Hive数据类型

1. 基本数据类型

2. 类型转化

总结


一、数据仓库介绍

        数据仓库是一个支持管理决策的数据集合。数据是面向主题的、集成的、不易丢失的、时变的。数据仓库是所有操作环境和外部数据源的快照集合。

1、数据仓库的特点

        面向主题的:数据仓库都是基于某个明确的主题的,仅需要与主题相关的信息,其他细节信息会被排除掉。

        集成的:从不同的数据源采集数据到同一个数据源,此过程会有一些ETL操作。

        随时间变化的:关键数据隐式或者显式的随时间变化。

        信息本身相对稳定的:数据装入之后一般只会进行查询操作,没有传统数据库的改操作。

2、数据仓库的基础架构

数据采集:数据采集层的任务就是从各种数据源中采集和存储到数据存储上,期间可能会做一些etl操作。
                  数据源有很多种:
                         日志:占份额最大,存储在备份服务器上。
                         业务数据库:如MySQL,Oracle等
                         来自Http/FTP的数据:合作伙伴提供的接口
                         其他数据源:如Excel等需要手动录入的数据

数据存储与分析:HDFS是大数据环境下数据仓库/数据存储最完美的解决方案。对于离线的数据的分析与计算,也就是对实时性要求不高的部分,hive是一个不错的工具。也可以使用MapReduce进行离线数据处理。使用Spark生态体系技术完成数据的离线和实时计算分析。

数据共享:前面使用hive、MR、Spark分析和计算的结果还是在HDFS上面,但大多数的业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,是的各种业务和产品能方便的获取数据。这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库。

数据应用:
       报表:报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层。
       接口:接口的数据都是直接查询数据共享层即可得到。
       即席查询:即席查询通常是现有的报表和数据共享层的数据并不能满足需求,需要从数据存储层直接查询。一般都是通过直接操作SQL得到。

二、Hive基本概念

1. Hive是什么

        Hive 是一个基于Hadoop的数仓工具。

        Hive 可以将结构化的数据映射为一张表,提供类SQL的查询语句HQL。

        Hive 的本质是一个翻译工具,将HQL语句转化为MapReduce程序提交到Yarn上运行。

        Hive使用MapReduce完成数据计算,数据存储在HDFS上面,所以可以认为Hive是Hadoop的一个客户端。

2. Hive的优缺点

优点:
(1)操作数据采用类SQL语法,简单易上手。
(2)避免了写MapReduce,减少人工学习成本。
(3)适合实时性要求不高的数据分析场景。
(4)处理大数据优势明显。
(5)Hive支持用户自定义函数,用户可以按照自己的需求实现自己的函数。

缺点:
(1)迭代式算法无法表达。
(2)数据挖掘方面不擅长。
(3)延迟较高,效率低。
(4)自动生成MapReduce作业,通常情况下不过智能。
(5)Hive调优比较困难,粒度较粗,较通用,不够具体。
(6)HQL表达能力有限。

 

3. Hive和数据库比较

 Hive数据库
查询语言HQLSQL
存储数据位置HDFS块设备或者本地文件系统
数据更新不建议修改数据经常修改数据
索引不建立索引,但是通过MR对数据进行访问,对于大数据的访问有优势会针对一个或者几个建立索引,对于少量的特定条件的数据访问效率比较高
执行大多数执行通过Hadoop提供的MR进行有自己的搜索引擎
执行延迟

没有索引和MR框架使得Hive的延迟比较高,

但是在数据规模超过数据库的处理能力的时候,hive的并行优势比较明显

延迟比较低,但是有一定的数据规模限制
可扩展性可扩展的扩展能力有限
数据规模支持大规模小规模

4. Hive的架构原理

 

 

1用户接口:Client

        CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)

2元数据:Metastore

        元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;

        默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore

3Hadoop

        使用HDFS进行存储,使用MapReduce进行计算。

4驱动器:Driver

(1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

(2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

(3)优化器(Query Optimizer):对逻辑执行计划进行优化。

(4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。

        Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

三、Hive数据类型

1. 基本数据类型

Hive数据类型

Java数据类型

长度

例子

TINYINT

byte

1byte有符号整数

20

SMALINT

short

2byte有符号整数

20

INT

int

4byte有符号整数

20

BIGINT

long

8byte有符号整数

20

BOOLEAN

boolean

布尔类型,true或者false

TRUE  FALSE

FLOAT

float

单精度浮点数

3.14159

DOUBLE

double

双精度浮点数

3.14159

STRING

string

字符系列。可以指定字符集。可以使用单引号或者双引号。

‘now is the time’ “for all good men”

TIMESTAMP

 

时间类型

 

BINARY

 

字节数组

 

        对于Hive的String类型相当于数据库的varchar类型,该类型是一个可变的字符串,不过它不能声明其中最多能存储多少个字符,理论上它可以存储2GB的字符数。

2. 类型转化

        Hive的数据类型是可以进行隐式转换的,类似于Java的类型转换。例如,某表达式使用的INT类型,那么TINYINT可以隐式转换为INT,但是Hive不能反向转换。例如某表达式使用过的TINYINT,INT类型不会转换为TINYINT,他会返回错误。

隐式转换规则如下:

(1)任何整数类型都可以隐式的转换为另一范围更广的数据类型,例如,TINYINT可以转换为INT,INT可以转换为BIGINT。

(2)所有的整数类型,FLOAT类型和STRING类型都可以隐式的转换为DOUBLE类型。

(3)TINYINT,SMALINT和INT都可以隐式的转换为FLOAT类型。

(4)BOOLEAN不可以转换为任何类型。

 


总结

Hive的入门简介,对Hive有一个简单认识,并且引入了数据仓库的概念,后面的文章会对Hive继续进行学习

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值