您的位置:首页 > 健康 > 美食 > Hive-内部表和外部表

Hive-内部表和外部表

2025/6/28 0:05:16 来源:https://blog.csdn.net/weixin_58305115/article/details/140808494  浏览:    关键词:Hive-内部表和外部表

         区别

内部表实例

准备数据

查看数据

删除数据

外部表实例

准备数据

查看数据

删除数据 


区别

内部表:管理元数据记录数据的文件和目录的信息)和数据。当删除内部表时,会删除数据和表的元数据,所以当多个表关联同一个文件时,其中一个表删除了,其他表也将会没有数据。

外部表:只管理元数据。删除表并不会影响其他表数据。【推荐】

内部表实例

准备数据

1,张三,工程部,75000
2,李四,市场部,80000
3,王五,财务部,85000
4,赵六,工程部,95000
5,孙七,人事部,60000

 

建库

-- 创建库
drop database if exists db_2 cascade;
create database db_2;
use db_2;

建表:分别创建3个内部表  依赖同一个文件

-- 1.1 创建内部表  依赖 文件1
CREATE TABLE IF NOT EXISTS db_2.employee (id INT,name STRING,department STRING,salary FLOAT
)
row format delimited fields terminated by ','
location '/test/external/employee_data'
;select * from db_2.employee;-- 1.2 创建内部表2 依赖 文件1
CREATE TABLE IF NOT EXISTS db_2.employee_2 (id INT,name STRING,department STRING,salary FLOAT
)
row format delimited fields terminated by ','
location '/test/external/employee_data'
;select * from db_2.employee_2;-- 1.3 创建内部表3 依赖 文件1
CREATE TABLE IF NOT EXISTS db_2.employee_3 (id INT,name STRING,department STRING,salary FLOAT
)
row format delimited fields terminated by ','
location '/test/external/employee_data'
;select * from db_2.employee_3;

 

查看数据

-- 验证数据加载
SELECT * FROM tb_archer;

删除数据

-- 删除内部表1
drop table db_2.employee;

删除内部表后,数据也被删除了 

 删除内部表1,内部表2和内部表3没有数据

外部表实例

准备数据

-- 2.1 创建外部表  依赖 文件1
CREATE external TABLE IF NOT EXISTS db_2.tb_employee_external (id INT,name STRING,department STRING,salary FLOAT
)
row format delimited fields terminated by ','
location '/test/external/employee_data'
;-- 1.2 创建外部表2 依赖 文件1
CREATE external TABLE IF NOT EXISTS db_2.tb_employee_external_2 (id INT,name STRING,department STRING,salary FLOAT
)
row format delimited fields terminated by ','
location '/test/external/employee_data'
;-- 1.3 创建外部表3 依赖 文件1
CREATE external TABLE IF NOT EXISTS db_2.tb_employee_external_3 (id INT,name STRING,department STRING,salary FLOAT
)
row format delimited fields terminated by ','
location '/test/external/employee_data'
;

 

 查看数据

select * from db_2.tb_employee_external;

删除数据 

drop table db_2.tb_employee_external;

删除外部表,仍然还有数据,只是把元数据删除了 

 删除外部表后,其他关联数据的表仍有数据

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com