目录
一、数仓和数据库的介绍
1、简介
- 操作型处理(数据库),叫联机事务处理OLTP(On-Line Transaction Processing),也可以称面向用户交易的 处理系统,它是针对具体业务在数据库联机的日常操作,通常进行增删改查操作。用户较为关心操作的响应时间、数 据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。
- 分析型处理(数据仓库),叫联机分析处理OLAP(On-Line Analytical Processing),也可以称为面向专业分析 人员进行数据分析,通常进行查询分析操作,一般针对某些主题的历史数据进行分析,支持管理决策
2、 数仓的分层架构
- 源数据层(ODS):此层数据无任何更改,直接沿用外围系统数据结构和数据, 不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做 准备。
- 数据仓库层(DW):也称为细节层,DW层的数据应该是一致的、准确的、干 净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
- 数据应用层(DA或APP):前端应用直接读取的数据源;根据报表、专题分析 需求而计算生成的数据。
二、数据库操作
1、创建库的语法为
CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION position];
2、删除库的语法为
DROP DATABASE db_name [CASCADE];
3、数据库和HDFS的关系
- Hive的库在HDFS上就是一个以.db结尾的目录
- 默认存储在:/user/hive/warehouse内
- 可以通过LOCATION关键字在创建的时候指定存储目录
三、 数据表操作
1.创建表的语法
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ... )]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ... )]
[CLUSTERED BY (col_name, col_name, ... )
[SORTED BY (col_name [ASC| DESC], ... )] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
2、数据类型
3、内部表和外部表
- 内部表(CREATE TABLE table_name ...) 未被external关键字修饰的即是内部表,内部表又称管理表或者托管表。 删除内部表:直接删除元数据和存储的业务数据
- 外部表(CREATE EXTERNAL TABLE table_name ...) 被external关键字修饰的即是外部表,外部表又称非管理表或者非托管表。 删除外部表:仅仅是删除元数据,存储的业务数据并不会被删除
4、 语法
(1)查看建表语句
show create table 表名;
(2)内部表转外部表
alter table stu set tblproperties('EXTERNAL'='TRUE');
(3)外部表转内部表
alter table stu set tblproperties('EXTERNAL'='FALSE');
(4)创建一个基础表
建库: create database if not exists myhive;
使用库:use myhive;
建表: create table if not exists stu(id int,name string);
插入数据:insert into stu values (1,"zhangsan");
查询数据:select * from stu;