Hive内部表与外部表

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanxingbudui/article/details/82116016

一、在Hive中创建表时,无external修饰的是内部表(managed table),有external修饰的是外部表(external table):
1、内部表的数据是Hive自身管理,外部表数据由HDFS管理; 
2、内部表数据存储的位置是hive在hdfs中存在默认的存储路径,即default数据库(默认:/user/hive/warehouse)。所以在该路径        下的表为内部表。
      外部表数据存储的位置由自己指定,可以指定除/user/hive/warehouse以外的路径。
3、删除内部表会直接删除元数据(metadata)及存储数据,对内部表的修改会将修改直接同步给元数据。
      删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name)

说明:hive的数据分为两种,一种为普通数据,一种为元数据。
       元数据存储着表的基本信息,增删改查记录,类似于Hadoop架构中的namespace。普通数据就是表中的详细数据。
       hive的元数据默认存储在derby中,但大多数情况下存储在MySQL中。普通数据如架构图所示存储在hdfs中。

二、内部表和外部表的转换:
内——>外
alter table tblName set tblproperties('EXTERNAL'='TRUE');
外——>内
alter table tblName set tblproperties('EXTERNAL'='FALSE');


https://www.iteblog.com/archives/899.html

猜你喜欢

转载自blog.csdn.net/lanxingbudui/article/details/82116016