Hive内部表与外部表的区别及使用场景

简介: Hive内部表与外部表的区别及使用场景

一、hive的内部表

1,建表语句

create table students
(
    id bigint,
    name string,
    age int,
    school string,
    class string
)
#指定分隔符(下面语句表示数据以逗号分隔开)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','   
#手动指定该内部表表格创建在HDFS下的/user/hive/warehouse目录内,也可以不指定,默认存放/user/hive/warehouse下
LOCATION '/user/hive/warehouse';

2,存储位置

内部表数据存储的位置是hive在hdfs中存在默认的存储路径,即default数据库(默认:/user/hive/warehouse)

3,管理主体

内部表的数据是Hive自身管理,创建内部表时,会将数据移动到数据仓库指向的路径

4,内部表转换为外部表

alter table table_name set tblproperties('EXTERNAL'='TRUE');
可以通过 desc formatted 表名  来查看表的属性

5,数据删除问题

删除内部表会直接删除元数据(metadata)及存储数据,对内部表的修改会将修改直接同步给元数据

二、hive的外部表

1,建表语句

# 关键词external 表示创建的hive表为外部表
create external table students
(
    id bigint,
    name string,
    age int,
    school string,
    class string
)
#指定分隔符(下面语句表示数据以逗号分隔开)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','   
#手动指定该内部表表格创建在HDFS下的/user/hive/warehouse_external 目录内
LOCATION '/user/hive/warehouse_external ';

2,存储位置

外部表数据存储的位置可以自己指定,指定除/user/hive/warehouse以外的路径。

3,管理主体

外部表数据由HDFS管理,创建外部表时,仅记录数据所在的路径,不对数据的位置做任何改变。

4,外部表转换为内部表

alter table table_name set tblproperties('EXTERNAL'='FALSE');
可以通过 desc formatted 表名  来查看表的属性

5,数据删除问题

删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name)

三、hive内部表与外部表的不同使用场景

1,场景一

因为hive内部表在删除表是同时删除表数据与元数据,而外部表删除的时候,仅仅会删除元数据,HDFS上的文件并不会被删除,所以外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。

2,场景二

如果所有的数据都由hive处理,则创建内部表;如果数据的处理由hive和其他工具一起处理,则创建外部表。

3,场景三

我们在管理表不方便和其他工作共享数据。可以创建一个外部表指向这份数据,而并不需要对其具有所有权。

我们在使用hive内部表与外部表的时候,需要根据合适的业务场景去选择哦!

我是晓之以理的喵~,欢迎大家相互交流!!!

相关文章
|
6月前
|
SQL 分布式计算 Hadoop
干翻Hadoop系列文章【02】:Hadoop、Hive、Spark的区别和联系
干翻Hadoop系列文章【02】:Hadoop、Hive、Spark的区别和联系
|
17天前
|
SQL 存储 分布式计算
Hive和Pig的区别是什么?如何选择?
【10月更文挑战第9天】Hive和Pig的区别是什么?如何选择?
15 0
|
6月前
|
SQL Java 数据处理
【Hive】Hive的函数:UDF、UDAF、UDTF的区别?
【4月更文挑战第17天】【Hive】Hive的函数:UDF、UDAF、UDTF的区别?
|
6月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
6月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
120 1
|
6月前
|
SQL 分布式计算 数据处理
【Hive】sort by 和 order by 的区别
【4月更文挑战第15天】【Hive】sort by 和 order by 的区别
|
SQL HIVE
Hive 中 4 个 By 的区别
Hive 中 4 个 By 的区别
207 1
|
SQL 存储 安全
Hive 内部表(管理表)和外部表的区别【重点】
Hive 内部表(管理表)和外部表的区别【重点】
717 1
|
6月前
|
SQL HIVE
bigdata-20-Hive内外部表
bigdata-20-Hive内外部表
42 0
|
6月前
|
SQL 分布式计算 关系型数据库
Hive与传统关系型数据库有什么区别?请举例说明。
Hive与传统关系型数据库有什么区别?请举例说明。
234 0