目录
一、数据仓库和数据库
实质区别是OLTP与OLAP
1.操作型处理(数据库)
联机事务处理OLTP,针对具体业务在数据库联机的日常操作,通常进行增删改查操作。
特征:数据库是面向事务的设计,数据库一般存储业务数据,数据库是为捕获数据而设计,
数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单 数据即可,符合业务应用,但是不符合分析。
2.分析型处理(数据仓库)
联机分析处理OLAP,
通常进行查询分析操作
,一般针对某些主题的历史数据进行分析,支持管理决策。
特征:
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的。数据仓库是面向主题设计的,数据仓库存储的一般是历史数据,数据仓库是为分析数据而设计,数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计
分层架构:源数据层,数据仓库层,数据应用层
二、数据库操作
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.表操作语法和数据类型
(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 [ASCIDESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
(2)数据类型
2.内部表和外部表区别
(1)Hive表类型
• 内部表(MANAGED_TABLE)
• 分区表
• 分桶表
• 外部表(EXTERNAL_TABLE)
• 分区表
• 分桶表
在HDFS的表默认存储路径:/user/hive/warehouse/库名.db
(2)内部表区别
删除内部表:直接删除元数据(metadata)及存储数据
删除外部表:仅仅是删除元数据(表的信息),不会删除数据本身
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.查看和修改
(1)查看
查看所有表:
show tables;
查看建表语句:
show create table 表名;
查看表结构信息:
desc 表名;
查看表格式化信息:
desc formatted 表名;
(2)修改
修改表名:
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.基本查询
SELECT [ALL | DISTINCT]select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY BYcol_list]
[HAVING where_condition]
[ORDER BY col_list]
[CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY col_list]]
[LIMIT number]
2.Sampli采样
(1) 为什么需要抽样?
大数据体系下,表内容一般偏大,小操作也要很久 ,所以如果想要简单看看数据,可以通过抽样快速查看
(2)TABLESAMPLE函数的使用
• 桶抽样方式,TABLESAMPLE(BUCKET x OUT OF y ON(colname |
rand())),推荐,完全随机,速度略慢块抽样,使用分桶表可以加速