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;

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

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

相关推荐
卷毛迷你猪5 天前
快速实验篇(A11)数据集成与多维分析:从单实验产出到跨实验宽表
hive·hadoop
西木莉5 天前
数据仓库概述
数据仓库
卷毛迷你猪6 天前
快速实验篇(A10)短序列上 SPI 的失效机制
hadoop
Francek Chen6 天前
【大数据处理与分析】数据仓库Hive:04 数据仓库Hive概述
大数据·数据仓库·hive·hadoop·分布式
Gl�ria6 天前
Hadoop/YARN 集群缩容:下线DN节点
大数据·hadoop·分布式
计算机源码社6 天前
基于大数据技术的台北市住宅价格影响因素挖掘与可视化分析-基于Python与Hadoop的台北市住宅价格数据仓库构建与可视化
大数据·hadoop·python·数据分析·spark·毕业设计·数据可视化
计算机源码社6 天前
基于Hadoop+Spark的乳腺癌病理数据可视化分析系统 基于K-Means聚类与PCA降维的乳腺癌形态特征分析系统
大数据·hadoop·python·数据分析·spark·毕业设计·数据可视化
Moshow郑锴7 天前
从“水库”到“直饮水站”:重新理解 Data Mart 与 Data Lake、Data Lakehouse、Data Warehouse 的区别
数据仓库·data·湖仓一体
躺柒7 天前
读数据架构知识体系指南01关系数据仓库(上)
数据仓库·架构·数据分析·spark·数据湖·关系数据库·企业数据仓库
卷毛迷你猪7 天前
快速实验篇(A9-2)Python vs MapReduce:小批量任务的工具选择
大数据·hadoop