Apache Hive使用语法和相关概念

目录

一、数据仓库和数据库

1.操作型处理(数据库)

2.分析型处理(数据仓库)

二、数据库操作

1. 创建库的语法为

2. 删除库的语法为

3. 数据库和HDFS的关系

三、数据表操作

1.表操作语法和数据类型

(1)创建表的语法

(2)数据类型

2.内部表和外部表区别

(1)Hive表类型

(2)内部表区别

3.内部表

4.外部表

5.查看和修改

(1)查看

(2)修改

四、数据查询

1.基本查询

2.Sampli采样

(1) 为什么需要抽样?

(2)TABLESAMPLE函数的使用


一、数据仓库和数据库

实质区别是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())),推荐,完全随机,速度略慢块抽样,使用分桶表可以加速
  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值