一、数仓与数据库的区别
1.实际讲的是OLTP与OLAP之间的区别
操作型处理(数据库),叫联机事务处理OLTP(On-Line Transaction Processing),也可以称面向用户交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常进行增删改查操作。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
分析型处理(数据仓库),叫联机分析处理OLAP(On-Line Analytical Processing),也可以称为面向专业分析人员进行数据分析,通常进行查询分析操作,一般针对某些主题的历史数据进行分析,支持管理决策。
数据仓库主要特征:面向主题的(Subject-Oriented)、集成的(Integrated)、非易失的(Non-Volatile)和时变的(Time-Variant)
2.仓库的分层架构
数据仓库架构可分为三层——源数据层、数据仓库层、数据应用层:
源数据层(ODS):此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。数据仓库层(DW):也称为细节层,DW层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。数据应用层(DA或APP):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。
3.ETL和ELT
数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extract,转化Transform ,装载Load)的过程。
但是在实际操作中将数据加载到仓库却产生了两种不同做法:ETL和ELT。
ETL:先从数据源池中抽取数据,数据保存在临时暂存数据库中(ODS)。然后执行转换操作,将数据结构化并转换为适合目标数据仓库系统的形式,然后将结构化数据加载到数据仓库中进行分析。
ELT:从数据源中抽取后立即加载。没有专门的临时数据库(ODS),这意味着数据会立即加载到单一的集中存储库中,数据在数据仓库系统中直接进行转换,然后进行分析
二、数据库操作
1.数据库基础命令
- 创建数据库
create database if not exists myhive;
use myhive;
- 查看数据库详情
desc database myhive;
- 创建数据库并指定hdfs存储位置
create database myhive2 location '/myhive2';
使用location关键字,可以指定数据库在HDFS的存储路径。
- 删除一个空数据库,如果数据库下面有数据表,那么就会报错
drop database myhive;
- 强制删除数据库,包含数据库下面的表一起删除。不建议使用cascade会强制删除。
drop database myhive2 cascade;
三、创建表的语法和数据类型
1.创造数据库语法表语法
2.数据类型
详解:https://blog.csdn.net/weixin_44096448/article/details/102987895
四、内部表和外部表
1.了解内部表和外部表,和他们的区别。
•内部表(CREATE TABLE table_name ...)未被external关键字修饰的即是内部表,内部表又称管理表或者托管表。
删除内部表:直接删除元数据和存储的业务数据
•外部表(CREATE EXTERNAL TABLE table_name ...)被external关键字修饰的即是外部表,外部表又称非管理表或者非托管表。
删除外部表:仅仅是删除元数据,存储的业务数据并不会被删除
- 内部表
- 外部表
2.查看修改表操作的命令
- 查看所有表:
show tables;
- 查看建表语句:
show create table 表名;
- 查看表结构信息:
desc 表名;
- 查看表格式化信息:
desc formatted 表名;
- 修改表名:
alter table 旧表名 rename to 新表名;
- 修改表路径:
alter table 表名 set location 'hdfs中存储路径';
- 修改表属性:
alter table 表名 set tblproperties ('属性名'='属性值');