1.数仓和数据库的区别
操作型处理(数据库),它是针对具体业务在数据库联机的日常操作,通常进行增删改查操作。
分析型处理(数据仓库),通常进行查询分析操作,一般针对某些主题的历史数据进行分析,支持管理决策。
数据仓库主要特征:
面向主题的(Subject-Oriented) 集成的(Integrated)
非易失的(Non-Volatile) 时变的(Time-Variant )
●数据库是面向事务的设计,数据仓库是面向主题设计的。
●数据库一般存储业务数据,数据仓库存储的一般是历史数据。
●数据库是为捕获数据而设计,数据仓库是为分析数据而设计
●数据库设计是尽量避免冗余 ,数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
2.数仓的分层架构
(1)源数据层(2)数据仓库层(3)数据应用层才培训专家
3.ETL和ELT
ETL: 先从数据源池中抽取数据,数据保存在临时暂存数据库中(ODS)。然后执行转换操作,将数
据结构化并转换为适合目标数据仓库系统的形式,然后将结构化数据加载到数据仓库中进行分析。
ELT: 从数据源中抽取后立即加载。没有专门的临时数据库(ODS),这意味着数据会立即加载到单
一的集中存储库中,数据在数据仓库系统中直接进行转换,然后进行分析
4.数据库操作
• 创建数据库
create database if not exists myhive;
use myhive;
• 查看数据库详细信
desc database myhive;
• 创建数据库并指定hdfs存储位置
create database myhive2 location '/myhive2';
• 删除一个空数据库,如果数据库下面有数据表,那么就会报错
drop database myhive;
• 强制删除数据库,包含数据库下面的表一起删除
drop database myhive2 cascade;
5.数据库和HDFS的关系
• Hive的库在HDFS上就是一个以.db结尾的目录
• 默认存储在:/user/hive/warehouse内
• 可以通过LOCATION关键字在创建的时候指定存储目录
5.创建数据库表语法
• EXTERNAL,创建外部表
• PARTITIONED BY, 分区表
• CLUSTERED BY,分桶表
• STORED AS,存储格式
• LOCATION,存储位置
![](https://img-blog.csdnimg.cn/direct/d524f0e204a1413785fca918a75ab542.png)
6.内部表和外部表
•
内部表(
CREATE TABLE table_name ...
)
删除内部表:
直接删除元数据和存储的业务数据
创建内部表:
create table [if not exists] 内部表名(
字段名 字段类型 , ...
)...;
复制内部表:
复制表结构:
CREATE TABLE 表名 like 存在的表名;
复制表结构和数据:
CREATE TABLE 表名 as select语句;
删除内部表:
drop table 内部表名;
查看表格式化信息:
desc formatted 表名;
truncate清空内部表数据:
truncate table 内部表名;
•
外部表(
CREATE EXTERNAL TABLE table_name ...
)
删除外部表:
仅仅是删除元数据,存储的业务数据并不会被删除
创建外部表:
create external table [if not exists] 内部表名(
字段名 字段类型 , ...
)...;
复制外部表:
复制表结构:
CREATE EXTERNAL TABLE 表名 like 存在的表名;
删除外部表:
drop table 外部表名;
查看表格式化信息:
desc formatted 表名;
7.
查看表操作
查看所有表
:
show tables;
查看建表语句
:
show create table
表名
;
查看表结构信息
:
desc
表名
;
查看表格式化信息
:
desc formatted
表名;
8.
修改表操作
修改表名
:
alter table
旧表名
rename to
新表名
;
修改表路径
:
alter table
表名
set location 'hdfs
中存储路径
';
修改表属性
:
alter table
表名
set tblproperties ('
属性名
'='
属性值
');
内外部表转换
•
内部表转外部表
alter table stu set tblproperties('EXTERNAL'='TRUE');
•
外部表转内部表
alter table stu set tblproperties('EXTERNAL'='FALSE');
通过stu set tblproperties来修改属性
9.Hive
Hive映射表的流程步骤
创建表
加载数据
验证数据
Hive表指定字段间分隔符的语法
row format delimited fields terminated by '分隔符'
Hive表中加载数据的语法
load data [local] inpath '数据文件路径' into table 表名;
10.数据加载和导出
•
加载数据的语法
• LOAD DATA
[
LOCAL
]
INPATH
'filepath'
[
OVERWRITE
]
INTO TABLE
表名
;
• INSERT INTO|OVERWRITE TABLE 表名
SELECT...
➢
导出数据的语法
• INSERT OVERWRITE [local] directory ‘
path
’
[format delimited] SELECT...;
• hive -f/-e 执行语句或者脚本
>
文件名