HIVE入门知识二、建表,查询,运用等

Hive建表语句

创建内部表:
– 创建一个内部表
create table if not exists student(
id int, name string
)
row format delimited fields terminated by ‘\t’
stored as textfile
location ‘/home/hadoop/hive/warehouse/student’;

在这里插入图片描述
– 查询表的类型
desc formatted student;

Hive建表语句解析:
在这里插入图片描述
Hive建表高阶语句 - CTAS and WITH
CTAS – as select方式建表
employee为已建立的表 ,ctas_employee要建的新表
CREATE TABLE ctas_employee as SELECT * FROM employee;
创建临时表
临时表是应用程序自动管理在复杂查询期间生成的中间数据的方法
表只对当前session有效,session退出后自动删除
表空间位于/tmp/hive-<user_name>(安全考虑)
如果创建的临时表表名已存在,实际用的是临时表
CREATE TEMPORARY TABLE tmp_table_name1 (c1 string);
装载数据:LOAD
LOAD用于在Hive中移动数据
LOAD DATA LOCAL INPATH ‘/home/dayongd/Downloads/employee.txt’
OVERWRITE INTO TABLE employee;
– 加LOCAL关键字,表示原始文件位于Linux本地,执行后为拷贝数据
LOAD DATA LOCAL INPATH ‘/home/dayongd/Downloads/employee.txt’
OVERWRITE INTO TABLE employee_partitioned PARTITION (year=2014, month=12);
– 没有LOCAL关键字,表示文件位于HDFS文件系统中,执行后为直接移动数据
LOAD DATA INPATH ‘/tmp/employee.txt’
OVERWRITE INTO TABLE employee_partitioned PARTITION (year=2017, month=12);

LOCAL:指定文件位于本地文件系统,执行后为拷贝数据
OVERWRITE:表示覆盖表中现有数据

Hive分区(Partition)
分区主要用于提高性能
分区列的值将表划分为一个个的文件夹
查询时语法使用"分区"列和常规列类似
查询时Hive会只从指定分区查询数据,提高查询效率
分为静态分区和动态分区

Hive分区操作 - 静态分区

创建分区表
create table dept_partition(
deptno int,
dname string,
loc string )
partitioned by (month string)
row format delimited fields terminated by ‘\t’;

通过PARTITINED BY定义分区

静态分区操作
– 添加分区
alter table dept_partition add partition(month=‘201906’) ;
alter table dept_partition add partition(month=‘201905’) partition(month=‘201904’);
– 删除分区
alter table dept_partition drop partition (month=‘201904’);
alter table dept_partition drop partition (month=‘201905’), partition (month=‘201906’);

ALTER TABLE的方式添加静态分区
ADD添加分区, DROP删除分区
分区表操作
– 查看分区表有多少分区
show partitions dept_partition;
– 加载数据到分区表中
load data local inpath ‘/opt/datas/dept.txt’ into table dept_partition partition(month=‘201909’);
可以创建多级分区
– 创建二级分区表
create table dept_partition2(
deptno int, dname string, loc string)
partitioned by (month string, day string)
row format delimited fields terminated by ‘\t’;
– 加载数据到二级分区表中
load data local inpath ‘/opt/datas/dept.txt’ into table dept_partition2 partition(month=‘201909’, day=‘13’);

Hive分区操作 - 动态分区

使用动态分区需设定属性
et hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
设置分区模式为非严格模式

动态分区建表语句和静态分区相同
动态分区插入数据
insert into dynamic_people
partition(year,month)
select id,name,age,start_date,year(start_date),month(start_date)
from people;
– 查询数据
select * from dynamic_people where year = 2018;

Hive视图操作
视图操作命令
CREATE、SHOW、DROP、ALTER

– 创建视图,支持 CTE, ORDER BY, LIMIT, JOIN,等
CREATE VIEW view_name AS SELECT statement;
– 查找视图 (SHOW VIEWS 在 hive v2.2.0之后)
SHOW TABLES;
– 查看视图定义
SHOW CREATE TABLE view_name;
– 删除视图
DROP view_name;
–更改视图属性
ALTER VIEW view_name SET TBLPROPERTIES (‘comment’ = ‘This is a view’);
– 更改视图定义,
ALTER VIEW view_name AS SELECT statement;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值