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_lydms7 分钟前
HDFS的读写流程
大数据·hadoop·hdfs·mapreduce·yarn·maxcompute·odps
BYSJMG1 天前
大数据毕业设计选题推荐:基于大数据的全球气温历史演变分析与可视化,用Hadoop+Spark处理
大数据·hadoop·分布式·信息可视化·spark·kmeans·课程设计
fastjson_1 天前
Hive 自定义函数
数据仓库·hive·hadoop
Gent_倪1 天前
MySQL 与 Hive 语法异同点详解
数据库·hive·mysql
lhldsg2 天前
智慧场馆解决方案软件开发实战:从需求分析到落地部署全流程
数据库·数据仓库·需求分析
迈巴赫车主2 天前
Doris简介
大数据·数据仓库·doris
张工在路上3 天前
WPF 布局基础概述
大数据·hadoop·wpf
BYSJMG3 天前
计算机毕设选题|基于大数据与文本挖掘的自动驾驶事故成因分析及可视化研究|Hadoop+PySpark+Django+Vue
大数据·hadoop·信息可视化·django·自动驾驶·kmeans·课程设计
weixin_307779134 天前
Databricks里用PySpark统计指定表和字段中各字段的空值、空字符串或零值比例
运维·数据仓库·python·spark·云计算
邀星月为媒4 天前
从零打造一个属于自己的 AI Agent:Core Hive Agent 开源项目解析
人工智能·hive·开源