数据库:
主要存放实时产生的数据,和业务应用相关,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安装模式
- 内嵌模式:元数据保持在内嵌的Derby模式,只允许一个会话连接
- 本地独立模式:在本地安装Mysql,把元数据放到Mysql内(单用户模式,只允许一个用户)
- 远程模式:元数据放置在远程的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)
内部表与外部表的区别:
内部表
- 在加载数据的过程中,实际数据会被移动到数据仓库目录中 (hive.metastore.warehouse.dir),
- 删除内部表时,内部表中的数据和元数据信息会被同时删除。
外部表
- 在加载数据的过程中,实际数据并不会被移动到数据仓库目录中,只是与外部表建立一个链接(相当于文件的快捷方式一样);
- 删除外部表时,仅删除该链接,hive中的元数据被删除,真实数据不会删除。
持续更新...