Hive简介

1、Hive的起源

Hive起源于Facebook(一个美国的社交服务网络)。Facebook有着大量的数据,而Hadoop是一个开源的MapReduce实现,可以轻松处理大量的数据。但是MapReduce程序对于Java程序员来说比较容易写,但是对于其他语言使用者来说不太方便。此时Facebook最早地开始研发Hive,它让对Hadoop使用SQL查询(实际上SQL后台转化为了MapReduce)成为可能,那些非Java程序员也可以更方便地使用。hive最早的目的也就是为了分析处理海量的日志。

2、Hive是什么

2.1、Hive是数据仓库

数据仓库英文名DataWarehouse,可简写为DW或DWH。数据仓库 ,由数据仓库之父比尔·恩门(Bill Inmon)于1990年提出,主要功能仍是将组织透过资讯系统之联机事务处理(OLTP)经年累月所累积的大量资料,透过数据仓库理论所特有的资料储存架构,作一有系统的分析整理,以利各种分析方法如联机分析处理(OLAP)、数据挖掘(Data Mining)之进行,并进而支持如决策支持系统(DSS)、主管资讯系统(EIS)之创建,帮助决策者能快速有效的自大量资料中,分析出有价值的资讯,以利决策拟定及快速回应外在环境变动,帮助建构商业智能(BI)。 往白了说数据仓库就是用来作为查询分析的数据库,很少用来插入,修改,删除

2.2、Hive是解释器、编译器、优化器、执行器

简单的将就是说HQL会被Hive解释,编译,优化并生成查询计划,一般情况而言查询计划会被转化为MapReduce任务进而执行。

3、Hive架构

  • 用户接口 :命令行接口CLI、客户端接口Client 、WebGUI接口WUI
  • 元数据存储:通常在关系型数据库之内
  • 解释器、编译器、优化器、执行器
  • Hadoop:HDFS用来进行MapReduce分布式计算
解释:
CLI命令行接口最常用,启动的时候会打开一个副本
Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server
WUI是浏览器访问Hive,一般很少使用,第一次使用的时候可能要部署网站。
Hive的元数据(比如表信息等)存储在关系型数据库如Derby、Mysql数据库,但是它的真实数据存储在HDFS文件系统之上,大部分操作都有MapReduce来执行。
图解Hive的架构和运行流程请打开网址( 点击打开链接)

4、Hive的安装

Hive有三种模式(内嵌模式、本地模式、远程模式)详细的安装方法请参照该博客( 点击打开链接

5、Hive的数据类型

•基本类型:整数型、浮点型、布尔型、字符串型
•复杂数据类型:数组型、集合型、结构型
•时间型:Date、timestamp
下面我具体举几个建表例子,来看一下Hive的一些数据类型

----------array型---------------------------------------
create table student(
id int,
name string,
grade array<double>
)
------------map型----------------------------
create table student1(
id int,
name string,
grade map<string,float>
)
-------------复杂array型--------------------------
create table student2(
id int,
name string,
grade array<map<string,double>>
)
--------------复杂结构型------------------
create table student3(
id int,
massage struct<name:string,id:int,grade:map<string,float> >
)

6、Hive中表的分类

  • 内部表
  • 外部表
  • 分区表
  • 桶表
内部表:什么是内部表需要对比外部表来看
•删表时数据和表一起删除

外部表:
•数据已经存在于HDFS
•外部表只是走一个过程,加载数据和创建表同时完成,不会移动到数据仓库目录中,仅仅是和数据建立了一个连接
•删表数据不会删除数据

内部表外部表区分:
在导入数据到外部表,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的!而内部表表则不一样;在删除内部表的时候,Hive将会把属于表的元数据和数据全部删掉;而删除外部表的时候,Hive仅仅删除外部表的元数据,数据是不会删除的!

分区表:
•在Hive Select查询中,一般会扫描整个表内容,会消耗很多时间做没必要的工作。 分区表指的是在创建表时,指定partition的分区空间。扫描时可以只扫描某一个分区的数据
•分区表存储时分局所设立的分区分别存储数据(分区字段就是一个文件夹的标识)

桶表
•对于每一个表(table)或者分区,Hive可以进一步组织成桶,也就是说捅是更为细粒度的数据范困划分。
•桶表是对指定的分桶的列进行哈希运算,运算结果模(%)分桶的数量然后把数据根据运算结果分别放入这几个桶中

下面写几个建表小例子来对比一下

----------内部表---------------------------------------
create table student(
id int,
name string,
grade array<double>
)
-------------分区表---------------------

create table p_t(
id int,
age int
)partitioned by (gender string)
row format delimited fields terminated by ','

------外部表--------------------------------------------------------- -
create external table e_t(
id int,
name string,
age int) row format delimited fields terminated by ',' location '/lws/' --注意这里'/lws/'为HDFS上面的文件所在目录
--------桶表-----------------------------------------------------------------------
create table b_t(
id int,
name string,
age int
)clustered by (name) into 5 buckets row format delimited fields terminated by ','

其他的关于Hive内容请看下面链接 。如果本文对你有所帮助别忘了点赞哦 害羞

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天心有情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值