二、表的DDL操作
2.创建外部表
create external table if not exists default.emp(
id int,
name string,
age int
)
row format delimited fields terminated by '\t'
location '/hive/data1' (此处目录可临时创建)
注:1)创建外部表要加上external关键字
2)location可以指定(存放在数据存放的具体目录),也可以不指定
(使用默认目录 /user/hive/warehouse)
3.导入数据(在建表的数据库位置执行)
load data local inpath '/home/hadoop/data/a.txt' into table teacher;
注:需要注意的是,这里就算直接把txt文件的数据存放到hdfs上表对应的存储目录,那么在select * FROM时也能查出后来添加的数据,因为建表定义存放位置时,实际是指向具体的文件,将文件映射成表结构展示出来。
4.将外部表改为内部表
alter table teacher set tblproperties('EXTERNAL'='FALSE');
5.内部表和外部表的区别
二、hive的其他命令
1.在hive client窗口查看本地文件系统
hive(default)> ! ls /opt;
2.在hive client命令窗口中查看hdfs文件系统
hive(default)> dfs -ls /;
三、HIve的分区表
概念:将表的数据分目录存储,存储在不同的文件夹下,然后按照不同的目录查询数据,不需要进行全量扫描,提升查询效率。(分区无上限,一般3个以内)
1.分区表的创建
create table dog(
id int,
name string ;
sex string
)
partitioned by (month string, day string)
row format delimited fileds terminated by '\t';
注:1)分区字段不能是表中已经存在的字段。
2)分区字段可以不止一个,可以设置多个
2.增加分区
1)增加单个分区
alter table dog add partition(dt='20240815');
2)增加多个分区
alter table dog add partition(dt='20240816',dt='20240817')
3.删除分区
1)删除单个分区
alter table dog drop partition(dt='20240815');
2)删除多个分区
alter table dog drop partition('20240816'),partition(dt='20240817');
4.重命名分区
alter table dog partition (dt='20240818') rename to partition (dt='20240817');
5.查看分区
show partitions dog;
6.修改分区
更改分区文件存储格式
ALTER TABLE table_name PARTITION (dt='20240817') SET FILEFORMAT file_format;
扩:修改表的名称
alter table dog_partition1 rename to dog_1;