Hive 内部表和外部表对比

简介: Hive 内部表和外部表区别

前言

在创建表的过程中,会有内部表和外部表之分,那么它们有哪些差别呢,分别的使用场景是什么呢?

内部表

内部表一般存储在 hive.metastore.warehouse.dir 配置项指定的目录下,默认情况下存储在类似于/user/hhive/warehouse/databasename.db/tablename/的目录中。在创建表时,location 配置项可以覆盖默认值。如果删除了内部表或分区,则会删除与该表或分区关联的数据和元数据。如果未指定PURGE选项,数据将在定义的时间间隔内移动到垃圾文件夹。

外部表

外部表描述了外部文件上的元数据/schema。外部表文件可以由Hive之外的进程访问和管理。外部表可以访问存储在Azure存储卷(ASV)或远程HDFS位置等源中的数据。如果更改了外部表的结构或分区,则可以使用 MSCK REPAIR table table_name 语句来刷新元数据信息。

注意:

1.外部表在使用drop语句时,只删除外部表的元数据,而数据文件不会被删除

2.外部表上只允许使用RELY约束

使用场景

内部表:

  • 想要使用ACID等事务特性的时候
  • 使用Hive管理表的生命周期时
  • 生成临时表,用于开发测试

外部表:

  • 文件已经存在或位于远程位置时
  • 避免数据文件不会被因误用Drop而删除(用于生产环境)
相关文章
|
4月前
|
SQL 存储 HIVE
Hive中的表是如何定义的?请解释表的结构和数据类型。
Hive中的表是如何定义的?请解释表的结构和数据类型。
89 0
|
3月前
|
SQL 缓存 关系型数据库
ClickHouse(19)ClickHouse集成Hive表引擎详细解析
Hive引擎允许对HDFS Hive表执行 `SELECT` 查询。目前它支持如下输入格式: -文本:只支持简单的标量列类型,除了 `Binary` - ORC:支持简单的标量列类型,除了`char`; 只支持 `array` 这样的复杂类型 - Parquet:支持所有简单标量列类型;只支持 `array` 这样的复杂类型
161 1
|
4月前
|
SQL 关系型数据库 MySQL
Hive 表注释乱码解决
Hive元数据在MySQL默认使用`latin1`字符集导致注释乱码。可通过修改MySQL配置文件`/etc/my.cnf`,在`[mysqld]`和末尾添加`character-set-server=utf8`等设置,重启MySQL。然后在Hive数据库中调整表字段、分区字段、索引注释的字符集。注意,这仅对新表生效。测试创建带注释的Hive表,问题解决。
|
4月前
|
SQL HIVE
Hive表删除数据不支持使用Delete From...
Hive表删除数据不支持使用Delete From...
158 0
|
4月前
|
SQL 存储 分布式计算
【Hive】hive内部表和外部表的区别
【4月更文挑战第14天】【Hive】hive内部表和外部表的区别
|
4月前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
110 1
|
4月前
|
SQL 数据库 HIVE
Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
【4月更文挑战第8天】Hive【基础知识 05】常用DDL操作(数据库操作+创建表+修改表+清空删除表+其他命令)
77 0
|
4月前
|
SQL HIVE
bigdata-20-Hive内外部表
bigdata-20-Hive内外部表
36 0
|
4月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
4月前
|
SQL 分布式计算 关系型数据库
Sqoop数据导入到Hive表的最佳实践
Sqoop数据导入到Hive表的最佳实践