如何查询外部表与管理表
student 表
1. desc formatted student
2. 查看Table Type External_TABLE 为外部表 , MANAGED_TABLE 称之为内部表,管理表
外部表与管理表区别
内部表默认存储在/user/hive/warehouse下,可以通过location制定
外部表创建时,可以自己指定location
- 删除管理表时,会删除表数据以及元数据
- 删除外部表删除时,只删除元数据(即表与文件的对应关系),不会删除hdfs文件数据
- 外部表更符合企业中常用场景
创建外部表
**添加关键字 External **
create external table if not exists default.dept_ext(
deptno int,
dname string,
loc string
)
ROW FORMAT delimited fields terminated by ' ' ;
默认会在/user/hive/warehouse 目录下创建dept_ext(表名)文件夹
导入数据到外部表
**先创建表后导入数据 **
load data local inpath '/opt/data/dept.txt' into table dept_ext ;
创建外部表并初始指定数据文件
创建表时指定数据源,该表不会在/user/hive/warehouse/ 下创建dept_ext目录
只要LOCATION 位置下有数据,创建dept_ext表后直接查询就会有数据
create external table if not exists default.dept_ext(
deptno int,
dname string,
loc string
)
ROW FORMAT delimited fields terminated by ' '
LOCATION '/user/hive/warehouse/dept' ;
外部表查询
select * from dept_ext ;
select count(*) from dept_ext ;
drop table
外部表drop之后, 元数据被删除,hdfs数据文件存在
drop table dept_ext ;
dfs -ls /user/hive/warehouse/dept_ext ;