Hive入门篇

    科技2022-07-16  120

    目录

    一、数据仓库介绍

    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继续进行学习

    Processed: 0.010, SQL: 8