Hive简介、DDL操作(建表、分区、导入导出等)

本文深入介绍了Hive数据仓库,包括其架构、元数据存储、与传统数据库的区别,以及Hive的数据类型。重点讲解了Hive的DDL操作,如创建内部表、外部表,分区操作,数据导入导出等,并提供了详细的示例。此外,还讨论了Hive的性能特点,如延迟高适合大数据分析,并支持用户自定义函数。
摘要由CSDN通过智能技术生成

Hive分析框架

一、Hive简述

Hive 建立在Hadoop文件系统上的数据仓库架构,并对存储在HDFS中的数据进行分析与管理

Hive架构的核心/本质 --将数据通过SQL语句转换成MapReduce操作/转成hdfs操作

数据仓库 --主要用来分析和管理数据,一般是查询操作,需要定期加载和刷新数据

元数据Metastore(表字段定义,属性,存放位置等除本身数据之外的信息)存储在关系型数据库(自建的mysql)中

优点:

​ 1) 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。

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

​ 3) Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。

​ 4) Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

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

缺点:

​ 1).Hive的HQL表达能力有限

​ 迭代式算法无法表达 因为本质是MR处理数据,因此很难做到多个MR串连

​ 数据挖掘方面不擅长 更多的是迭代运算

​ 2).Hive的效率比较低

​ Hive自动生成的MapReduce作业,通常情况下不够智能化

​ Hive调优比较困难,粒度较粗

二、Hive架构

[外链图片转存失败(img-uzJ99ATD-1566997166054)(C:\Users\86158\AppData\Roaming\Typora\typora-user-images\1566355212915.png)]

1 组件功能

1.用户接口:Client

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

2.元数据:Metastore

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

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

3.Hadoop

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

4.驱动器:Driver

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

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

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

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

2 sql–>MR过程

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

3 derby

同一时间只能启用一个hive,默认情况下hive原数据信息放在自己单独的derby数据库中,可以配置存放mysql

三、Hive和数据库的比较

个人理解简而言之:

​ Hive是存储大数据的并行计算类似于存储年份,省份等有跨度的数据;Hive只查索引位置,没有具体数据

​ 数据库存储小量数据类似于天、小时等数据;存放具体数据

细节方面的比较汇总如下:

​ 查询语句相似 Hive是hql || 数据库是sql

​ 数据库存储位置 Hive存储在HDFS上 || 数据库是本地存储

​ 数据更新 Hive数仓读多写少,不建议对数据进行修改 || 数据库中的数据需要经常修改

​ 索引 Hive暴力扫描整个数据,延迟高,无索引但可并行访问数据 || 数据库通常会建立索引

​ 执行 Hive大多数查询是基于MR || 数据库通常有自己的执行引擎

​ 执行延迟 Hive延迟有2(本身数据大;MR执行) || 数据库在数据规模小前提下,执行延迟低

​ 可扩展性 Hive基于Hadoop || 数据库由于受到ACID语义限制,扩展有限

​ 数据规模 Hive并行处理大规模数据 || 数据库支持的数据规模小

​ 数据格式 Hive可以自定义数据格式 || 数据库系统定义格式

四、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 字节数组

Tips:

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

2 集合数据类型

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值