目录
Apache Hive使用语法与概念原理
数据仓库和数据库
操作型处理(数据库):联机事务处理OLTP(增删改查操作)
分析型处理(数据仓库):联机分析处理OLAP(查询分析操作)
数仓和数据库的区别
数据库是面向事务的设计,数据仓库是面向主题设计的。
数据库一般存储业务数据,数据仓库存储的一般是历史数据。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计数据库设计是尽量避免冗余。
数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
数仓的分层架构
源数据层(ODS):临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。
数据仓库层(DW):对源系统数据进行了清洗(去除了杂质)后的数据。
数据应用层(DA或APP):根据报表、专题分析需求而计算生成的数据。
ETL和ELT
数据库操作
• 创建数据库
create database if not exists myhive;
use myhive;
• 查看数据库详细信息
desc database myhive;
• 创建数据库并指定hdfs存储位置
create database myhive2 location '/myhive2';
• 删除一个空数据库
drop database myhive;
• 强制删除数据库
drop database myhive2 cascade;
数据表操作
创建数据库表语法
数据类型
内部表和外部表
• 内部表
删除内部表:直接删除元数据和存储的业务数据
• 创建内部表:
create table [if not exists]内部表名(
字段名字段类型, ...
)...;
• 复制内部表:
复制表结构:CREATE TABLE表名like存在的表名;
复制表结构和数据:CREATE TABLE表名as select语句;
• 删除内部表:
drop table内部表名;
• 查看表格式化信息:
desc formatted表名;
• truncate清空内部表数据:
truncate table内部表名;
• 外部表
• 创建外部表:
createexternaltable [if not exists]内部表名(
字段名字段类型, ...
)...;
• 复制外部表:
CREATE EXTERNAL TABLE表名like存在的表名;
• 删除外部表:
drop table外部表名;
• 查看格式化信息:
desc formatted表名;
删除外部表:仅仅是删除元数据,存储的业务数据并不会被删除
查看表操作
• 查看所有表:
show tables;
• 查看建表语句:
show create table表名;
• 查看表结构信息:
desc表名;
• 查看表格式化信息:
desc formatted表名;
修改表操作
• 修改表名:
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');
快速映射表
1.创建表:
create table [if not exists]表名(
字段名字段类型,
...,
字段名 字段类型
)row format delimited
fields terminated by '分隔符'
...;
2.加载数据:
load data [local] inpath '数据文件路径'
into table表名;
3.验证数据:
select字段名from表名
...;
数据加载
• 加载数据的语法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE表名;
INSERT INTO|OVERWRITE TABLE表名SELECT...