1.数据仓库
主要是面向分析的集成化数据环境,为企业提供决策支持。
BI:提供报表并提出决策支持,帮助企业做出业务经营决策
设计初衷:分析需求、分析维度、分析的指标进行设计的,其面向分析型 处理。也叫联机分析处理 OLAP
2.数据库
面向业务应用,面向事务的设计。联机事务处理 OLTR
数据库和数据仓库的区别
1.数据库是面向业务应用,数据仓库是面向分析
2.数据库一般是存储业务数据或者实时数据,而数据仓库存储的一般为历史数据
3.数据库设计是尽量避免冗余,符合业务应用即可,但不符合分析
数据仓库设计有意引入冗余。,依照分析需求,分析维度,分析指标来设计
数据仓库的特点:
1.面向主题 例:支付是面向应用。交易是面向主题
2.数据集成 将不同的数据源整合到一起,按照统一的形式进行集成
3.相对稳定 历史数据一般不会发生改变
4.不生产数据,也不消费任何数据
DDL:数据定义语言 create drop alter 结构
DML:数据操作语言 insert update delete 数据
DCL:GRANT
Hive是数据仓库
非java编程者对HDFS的数据做MapReduce程序操作
SQL–>MapReduce程序
Hive的体系结构
- 接口层:shell jdbc GUI
- SQL解析:SQL ———> MapReduce
元数据:Derby Mysql
真实数据:HDFS
默认存储表的数据目录:/user/hive/warehouse
指定表的存储目录:location ‘HDFS路径’ - Hadoop
内部表与外部表的区别
内部表:
- 删除内部表会删除数据和元数据
- 内部表有自身Hive来管理
- 列的类型:简单类型,复杂类型(Map,Array,struct)
- 指定读写规则:字段之间、Map、Array
外部表
- 外部表需要使用关键字EXTERNAL,需要指定Location
- 删除外部表仅仅只是删除元数据,真实数据并没有并删除
- 外部表Location仅是相当于对目录引用一样,引用删除时原始数据存在
分区
- 指定分区:partition by 来指定
- 优点:方便查询,提高检索效率
- 增加分区:ALTER TABLE ADD
- 删除分区:DROP(xxxx=‘xx’)
Hive搭建模式
- local模式:Test元数据存储在derby中,元数据由自身来管理
- 单用户模式:元数据由自身来管理,元数据存储在Mysql中
- 多用户模式:metastoreServer管理元数据,元数据存储在Mysql中
划分依据:元数据的管理与存储
mettastoreServer:
- 通信协议:thrift
- 提供服务的端口:9083
- mysql驱动程序
导入数据的指令和方式
LOAD DATA (LOCAL) INPATH ‘/xxx/xxx’ INTO TABLE xxx
方式
insert into table 效率低
load data (local) inpath ‘/root/data1’ [ overwrite] into table tablename
Insert from 比较适用于分析场景
Hive函数:UDAF UDTF UDF