hive中内部表和外部表有什么区别?
在使用hive搭建数据仓库的时候,可以建立两种表格。一种是内部表(managed table),一种是外部表(external table)。
内部表建表是不加修饰词即可:
create table database_name.table_name
(column1 string,
column2 string)
外部表建表时需要加external:
create table external database_name.table_name
(column1 string,
column2 string)
两者的区别在于数据的管理。
对于内部表,删除表格时,删除元数据(meta data)和存储数据,即表格,以及对应表格的数据文件。
对于外部表,删除表格时,仅删除元数据(meta data)。即仅删除表格,不会删除元数据。如果发现错误删除表格,可以把重新建表,然后把数据load回新表中。
那么什么时候使用内部表,什么时候使用外部表呢?
一般情况下,在企业内部都是使用外部表的。因为会有多人操作数据仓库,可能会产生数据表误删除操作,为了数据安全性,通常会使用外部表。
当个人写测试代码的时候,可以使用内部表,这样当自己使用完成后,可以方便直接删除