一、数据仓库和数据库
1、数仓和数据库的区别
操作型处理(数据库),叫
联机
事务
处理
OLTP
(On-Line Transaction Processing)
,也可以称
面向用户
交易的 处理系统,它是针对具体业务在数据库联机的日常操作,通常进行
增删改查
操作。用户较为关心操作的响应时间、数 据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
分析型处理(数据仓库)
,叫
联机
分析
处理
OLAP
(On-Line Analytical Processing),
也可以称为
面向专业分析 人员进行数据分析,通常进行
查询分析
操作
,一般针对某些主题的历史数据进行分析,支持管理决策。
数据仓库的出现,并不是要取代数据库,主要区别如下:
(1)数据库是面向事务的设计,数据仓库是面向主题设计的。
(2)数据库一般存储业务数据,数据仓库存储的一般是历史数据。
(3)数据库是为捕获数据而设计,数据仓库是为分析数据而设计
(4)数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单 数据即可,符合业务应用,但是不符合分析。
数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
2、数仓的分层架构
二、数据库操作
• 创建数据库
create database if not exists myhive;
use myhive;
• 查看数据库详细信息
desc database myhive;
•
创建数据库并指定hdfs存储位置
create database myhive2 location '/myhive2';
•
删除一个空数据库,如果数据库下面有数据表,那么就会报错
drop database myhive;
•
强制删除数据库,包含数据库下面的表一起删除
drop database myhive2 cascade;
三、数据表操作
1、表操作语法和数据类型
(1)创建表的语法
(2)数据类型
2、内部表和外部表区别
• 内部表(MANAGED_TABLE)
• 分区表
• 分桶表
• 外部表(EXTERNAL_TABLE)
• 分区表
• 分桶表
3、内部表
• 创建内部表
create table [if not exists] 内部表名(
字段名 字段类型 , ...
)...;
• 复制表结构
CREATE TABLE 表名 like 存在的表名;
• 复制表结构和数据
CREATE TABLE 表名 as select语句;
• 删除内部表
drop table 内部表名;
• 查看表格式化信息
desc formatted 表名;
•
truncate清空内部表数
truncate table 内部表名;
4、外部表
•
创建外部表
create external table [if not exists] 内部表名(
字段名 字段类型 , ...
)...;
•
复制表结构
CREATE EXTERNAL TABLE 表名 like 存在的表名;
•删除外部表
drop table 外部表名;
•查看表格式化信息
desc formatted 表名;
注意: 外部表不能使用truncate关键字清空数据
5、查看/修改表
•查看建表语句
show create table 表名;
•内部表转外部表
alter table stu set tblproperties('EXTERNAL'='TRUE');
•外部表转内部表
alter table stu set tblproperties('EXTERNAL'='FALSE');
6、映射表
7、数据加载和导出
加载数据的语法
• LOAD DATA
[
LOCAL
]
INPATH
'filepath'
[
OVERWRITE
]
INTO TABLE
表名
;
• INSERT INTO|OVERWRITE TABLE 表名
SELECT...
注意: 使用LOAD语句:
数据来源本
地,
本
地数据文件
会保留
,
本质
是
本
地文件
上传
HDF
S据来
自
H
DF
S,
加载后
文件
不
存在,
本质
是在H
DF
S
上进行
文件
移动
导出数据的语法
• INSERT OVERWRITE [local] directory ‘
path
’
[format delimited] SELECT...;
• hive -f/-e 执行语句或者脚本
>
文件名