Hive-内部表和外部表

区别

内部表实例

准备数据

查看数据

删除数据

外部表实例

准备数据

查看数据

删除数据


区别

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

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

内部表实例

准备数据

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

建库

bash 复制代码
-- 创建库
drop database if exists db_2 cascade;
create database db_2;
use db_2;

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

bash 复制代码
-- 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;

查看数据

bash 复制代码
-- 验证数据加载
SELECT * FROM tb_archer;

删除数据

bash 复制代码
-- 删除内部表1
drop table db_2.employee;

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

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

外部表实例

准备数据

bash 复制代码
-- 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'
;

查看数据

bash 复制代码
select * from db_2.tb_employee_external;

删除数据

bash 复制代码
drop table db_2.tb_employee_external;

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

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

相关推荐
ha_lydms3 小时前
Datetime Functions(日期时间函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
ha_lydms5 小时前
Bitwise Functions(位运算函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
ha_lydms9 小时前
St Functions(空间函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
成都蜀味缘餐饮技术培训学校9 小时前
油炸串串技术培训实战指南,核心食材选购与预处理标准
数据仓库·经验分享·笔记·课程设计·微信公众平台
ha_lydms11 小时前
Table Functions(表函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
ha_lydms13 小时前
Json Functions(JSON 函数)
大数据·hadoop·spark·json·数据处理·dataworks·maxcompute
171320330计算机毕设编程13 小时前
计算机毕业设计 基于Hadoop的新能源汽车发展前景分析 LW PPT
java·大数据·hadoop·python·算法·随机森林·线性回归
ha_lydms14 小时前
Conditional Functions(条件函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
程序员大阳17 小时前
副队长大数据教程(7)--Hadoop 集群角色配置逻辑详解
大数据·hadoop·分布式·集群·配置·角色·逻辑
ha_lydms18 小时前
String Functions(字符串函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute