hive中表的两种基本类型
1)、内部表(managed)--默认
2)、外部表(external)
简介
本文将介绍内部表及外部表的一些差异点,不过hive中内部表与外部表根本的差异在于表是否拥有自己的数据。
这意味着表数据以及表属性只能通过hive的命令进行更改,而实际上因为数据文件保存在文件系统上,任何有权限的人都有可能绕过hive对其作出更改,如果更改操作违反了hive对文件要求的不变性及hive对文件格式和内容的期望,则最终hive返回的结果很有可能是用户所不希望看到的;
内部表的另一个特性是数据都追加到hive实体中,举例来说,每当改变hive实体数据时,其对应的数据也将发生改变。这与传统的RDBMS非常类似--更改数据库数据都是基于SQL的访问权限来操作而非直接修改数据文件;
而对于外部表,hive认为其不管理数据;
使用上可以通过使用命令查看表的详细信息:
hive> desc formatted table_name;
其中一项table type指明了当前表类型是MANAGED_TABLE还是EXTERNAL_TABLE ;
特性比较
内部表与外部表存在以下但不完全的特性差异:
ARCHIVE/UNARCHIVE