Hive入门详解

Hadoop之Hive入门详解

第一章、Hive的基本概念

一、什么是Hive?

1.Hive是基于Hadoop的一个数据仓库工具;

2.Hive可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

3.Hive本质:将HQL转换成MapReduce程序。

4.Hive与Hadoop的关系

(1)Hive封装了很多MapReduce的模板

(2)Hive的数据存储在HDFS上

(3)Hive运行在YARN上

ps:结构化数据,有行有列(每列数据类型相同)

ps:MySQL4.1之前,varchar的范围

ps:Hive中字符串直接用String,不用varchar();

二、Hive的优缺点

1.优点:

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

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

(3)Hive优势在于处理大数据,支持海量数据的分析与计算。

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

2.缺点:

(1)Hive自动生成的MapReduce作业,通常不够智能化。(机翻)

(2)数据挖掘能力不擅长,

(3)Hive的效率比较低,执行延迟比较高

(4)Hive调优比较困难,粒度较粗。

(5)Hive不支持实时查询和行级别更新

三、Hive的架构原理

1.用户连接:

(1)CLI(command-line interface)

(2)JDBC/ODBC(jdbc访问hive)

2.元数据:Metastore,描述数据的数据,表名、表所属的数据库、表拥有者、表列字段、表的类型、字段数据类型、表数据的所在目录。

(1)元数据必须与数据分开,否则会破坏数据的结构化。

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

3.Hadoop:使用HDFS进行存储,使用MapReduce进行计算。

4.驱动器:Driver

(1)解析器:判断sql语法的问题

(2)编译器:将写好的sql制定执行计划

(3)优化器:对写好的执行计划优化

(4)执行器:找mr模板执行sql

在这里插入图片描述

四、Hive和数据库的比较

由于 Hive 采用了类似SQL 的查询语言 HQL(Hive Query Language),因此很容易将 Hive 理解为数据库。其实从结构上来看,Hive 和数据库除了拥有类似的查询语言,再无类似之处。本文将从多个方面来阐述 Hive 和数据库的差异。数据库可以用在 Online 的应用中,但是Hive 是为数据仓库而设计的,清楚这一点,有助于从应用角度理解 Hive 的特性。

1、 查询语言

由于SQL被广泛的应用在数据仓库中,因此,专门针对Hive的特性设计了类SQL的查询语言HQL。熟悉SQL开发的开发者可以很方便的使用Hive进行开发。

2、数据更新

由于Hive是针对数据仓库应用设计的,而数据仓库的内容是读多写少的。因此,Hive中不建议对数据的改写,所有的数据都是在加载的时候确定好的。而数据库中的数据通常是需要经常进行修改的,因此可以使用 INSERT INTO … VALUES 添加数据,使用 UPDATE … SET修改数据。

3、 执行延迟

Hive 在查询数据的时候,由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致 Hive 执行延迟高的因素是 MapReduce框架。由于MapReduce 本身具有较高的延迟,因此在利用MapReduce 执行Hive查询时,也会有较高的延迟。相对的,数据库的执行延迟较低。当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive的并行计算显然能体现出优势。

4、 数据规模

由于Hive建立在集群上并可以利用MapReduce进行并行计算,因此可以支持很大规模的数据;对应的,数据库可以支持的数据规模较小。

第二章、Hive安装

具体详见Hive安装,因考虑不同版本,本文暂不详述。

第三章、Hive数据类型

一、基本数据类型

HIVE MySQL JAVA 长度 例子
TINYINT TINYINT byte 1byte有符号整数 2
SMALINT SMALINT short 2byte有符号整数 20
INT INT int 4byte有符号整数 20
BIGINT BIGINT long 8byte有符号整数 20
BOOLEAN boolean 布尔类型,true或者false TRUE FALSE
FLOAT FLOAT float 单精度浮点数 3.14159
DOUBLE DOUBLE double 双精度浮点数 3.14159
STRING VARCHAR string 字符系列。可以指定字符集。可以使用单引号或者双引号。 ‘now is the time’ “for all good men”
TIMESTAMP TIMESTAMP 时间类型
BINARY BINARY 字节数组

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值