1.1 内部表(管理表)
create table t3(name string,.....);
就是说数据的生命周期受表的控制,当表删除的时候,其数据文件一并被删除
1.2 外部表
create ==external== table t4(name string,....);
就是说数据的生命周期不受表的控制,当表删除的时候,其数据文件并不会删除
1.3 分区表
分区可以理解为分类,通过分类把不同类型的数据放到不同的目录下 分类的标准就是分区字段,可以一个,也可以多个 分区表的意义在于优化查询。查询时尽量利用分区字段。如果不使用分区字段,就会全部扫描 分区表也是hive优化的一种很重要的手段
入库数据:
小明 23 1994
小花 20 1993
小丽 30 1992
创建分区表(指定分区字段)
- create table t7(name string,age int) **partitioned by(year string,month string)** row format delimited fields terminated by ' ';
给分区表添加分区
alter table t7 add partition(year=2008,month=02);
alter table t7 add partition(year=2008,month=03);
把数据入库
load data local inpath 't5.txt' into table t7 partition(year=2008,month=02);
展示所有分区
show partitions t7
删除分区
alter table t7 drop partition(year=2008,month=02);
1.4 桶表
桶表是对数据进行哈希取值,然后放到不同文件中存储**
桶表的主要作用:
数据抽样
提高某些查询效率
create table t8(id string) clustered by(id) into 3 buckets;
insert into t8(name,age) values('admin',12);
在桶表中如果使用loaddata则不能进行分桶操作(物理上没有分桶文件)
insert overwrite local directory '/xxx.d' select * from t8;
3、Hive中视图 create view v1 as select * from t4;
select * from v1;**
复制表结构和数据
create table t9 as select * from t4;
复制表结构,但不复制数据
create table t10 like t4;