hive中内部表及外部表特性差异

Hive中的内部表和外部表在使用上有显著区别。内部表的元数据和数据在`hive.metastore.warehouse.dir`指定的目录下,`DROP`操作会删除元数据和数据。而外部表仅删除元数据,数据保留,适合于外部进程管理。内部表支持ARCHIVE等操作,适用于ACID事务和查询缓存,外部表则适合已存在的或远程的数据,且元数据可以更新。
摘要由CSDN通过智能技术生成

关键点:

ARCHIVE/UNARCHIVE/TRUNCATE/MERGE/CONCATENATE命令只能在内部表上进行使用;

DROP操作将会删除内部表的元数据及数据信息,而对于外部表则仅仅删除元数据信息;

ACID的事务特性仅仅适用于内部表; 查询结果缓存只适用于内部表;

外部表的表约束只支持RELY操作;

一些物化视图的特性只适用于内部表;

 

 

hive中表的两种基本类型

1)、内部表(managed)--默认
2)、外部表(external)

简介

本文将介绍内部表及外部表的一些差异点,不过hive中内部表与外部表根本的差异在于表是否拥有自己的数据。
这意味着表数据以及表属性只能通过hive的命令进行更改,而实际上因为数据文件保存在文件系统上,任何有权限的人都有可能绕过hive对其作出更改,如果更改操作违反了hive对文件要求的不变性及hive对文件格式和内容的期望,则最终hive返回的结果很有可能是用户所不希望看到的;
内部表的另一个特性是数据都追加到hive实体中,举例来说,每当改变hive实体数据时,其对应的数据也将发生改变。这与传统的RDBMS非常类似--更改数据库数据都是基于SQL的访问权限来操作而非直接修改数据文件;
而对于外部表,hive认为其不管理数据;

使用上可以通过使用命令查看表的详细信息:

hive> desc formatted table_name;
  • 1

其中一项table type指明了当前表类型是MANAGED_TABLE还是EXTERNAL_TABLE ;

特性比较

内部表与外部表存在以下但不完全的特性差异:

ARCHIVE/UNARCHIVE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值