大数据实训03---Hive数据仓库

数据库:

主要存放实时产生的数据,和业务应用相关,OLTF(面向事务处理)

数据库是为捕获数据而设计

数据仓库:

依照分析需求、分析维度和设计指标来进行设计。

数据仓库存放的是历史数据,OLAP(面向分析处理)

数据仓库为分析数据而设计

数据库设计应该遵守三大范式,符合业务应用即可,但是不符合分析,数据仓库不需要遵守三大范式

Hive

 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一 张数据库表,并提供类SQL查询功能。 

其实HIVE就是一个SQL解析引擎它将SQL语句转译成M/R JOB然后 在Hadoop执行,来达到快速开发的目的。它的表其实就是一个Hadoop的目录/文件(HIVE默认表存放路径一般都是在你工作目录的hive目录里面),按表名做文件夹分开。

  • 可以把Hadoop下的原始结构化数据变成Hive中的表
  • 可以看成是从SQL到Map-Reduce的映射器 
  • Hive是为大数据批量处理而生的,Hive的出现解决了传统的关系型数据库 (MySql、Oracle)在大数据处理上的瓶颈 

hive官网

Hive体系结构

Hive运行机制

Hive安装模式

  1. 内嵌模式:元数据保持在内嵌的Derby模式,只允许一个会话连接
  2. 本地独立模式:在本地安装Mysql,把元数据放到Mysql内(单用户模式,只允许一个用户)
  3. 远程模式:元数据放置在远程的Mysql数据库(可以有多个客户端,需要有单独的服务器管理元数据)

目前实训是用的是单用户模式,查看hive配置信息

 启动hive,查看表(目前是空的),创建一张表,查看表结构

 查看表的格式信息 desc formatted tablename; 可以看到表数据是存储的位置

 

 查看hive仓库中对于刚刚创建的表的管理(TBLS---记录了表名,表类型,sd-id, COLUMNS----记录了表的字段)

 

 查看hdfs中存放的表数据

 在表中插入一条记录

可以看出单条插入数据执行效率低,可以使用上传数据文件实现批量导入数据

1.在hive中load data

2.直接将数据文件放在hdfs默认的存放数据位置 

 

 查看数据是否上传成功

hive语言:HIve_languageManual

SQL语言:

  • DDL数据定义语言,(结构相关)创建create,修改alter,删除drop
  • DML数据操作语言,(数据相关)增insert删delete改update查select
  • DCL数据控制语言,(权限相关)  grant

 创建一个外部表logs,指定存储位置(默认的位置)

将事先准备好的数据文件上传到默认指定路径后,可以从hive查到表数据 

进行简单的数据分析:统计记录数,可以看到hive先进行解析,之后启用MR执行处理得到结果

 

hive有两种表:内部表(普通表)、外部表(external)

内部表与外部表的区别:

内部表

  1. 在加载数据的过程中,实际数据会被移动到数据仓库目录中 (hive.metastore.warehouse.dir),
  2. 删除内部表时,内部表中的数据和元数据信息会被同时删除

外部表

  1. 在加载数据的过程中,实际数据并不会被移动到数据仓库目录中,只是与外部表建立一个链接(相当于文件的快捷方式一样);
  2. 删除外部表时,仅删除该链接,hive中的元数据被删除,真实数据不会删除

 

持续更新...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章