hive内部表和外部表

hive内部表就是在create的时候,不加external,就是内部表,数据会复制到hive的warehouse里。

hive外部表就是在create的时候,加上external,就是外部表。外部表分多种

有hbase的外部表。有文件系统的外部表,机理是差不错的。基于文件系统的外部表,一定要加location,否则的话会和内部表一样,会复制数据到warehouse。外部表在drop table的时候不会删除location下的数据,只会删除metastore中的表的数据。而内部表会删除所有东西,包括warehouse中的数据和metastore中的数据。

有一次drop一个外部表,但是在warehouse中还是有表的数据,只是show tables时,没有显示表。这是因为我在create外部表的时候,忘记加上location。所以数据会复制到warehouse中,但是drop外部表的时候只会删除metastore中的数据。所以在warehouse中数据总是删除不掉。

下面这篇文章讲的就是基于文件系统的外部表和内部表的区别,讲的很详细。注意,基于文件系统的外部表,一定要加location,否则的话会和内部表一样,会复制数据到warehouse。

参考:hive内部表与外部表区别详细介绍

你可能感兴趣的:(hive内部表和外部表)