Hive 内部表和外部表对比

34 篇文章 13 订阅 ¥19.90 ¥99.00
本文探讨了Hive内部表和外部表的主要区别。内部表数据存储在默认目录或自定义location,删除时会连同数据一起删除。外部表仅管理元数据,数据存于外部,drop操作不会删除数据文件。使用场景上,内部表适用于事务处理、临时表,外部表则适合已存在的或远程存储的数据,以及生产环境中保护数据不被误删。
摘要由CSDN通过智能技术生成

前言

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

内部表

内部表一般存储在 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而删除(用于生产环境)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑看风云路

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值