Hive-杂记

1. 外部表与内部表、临时表

1.1. 内部表

1
2
/*默认创建的是内部表*/
create table test (name string , age string) location '/input/table_data';

1.2. 外部表

1
create external table test (name string , age string) location '/input/table_data';

1.3. 区别

  • 未被 external 修饰的表是内部表(managed table),被 external 修饰的是外部表(external table)。
  • 内部表的数据是由Hive自身管理的,外部表的数据是由HDFS管理的;删除内部表会删除元数据和存储的数据;删除外部表只删除元数据不删除存储的数据。

1.4. 转换

1
2
3
4
--内部转外部
alter table tableA set TBLPROPERTIES('EXTERNAL'='true')
--外部转内部
alter table tableA set TBLPROPERTIES('EXTERNAL'='false')

2. 临时表

1
create temporary table (name string , age string)

表只对当前session有效,session退出后,表自动删除。不支持分区字段和创建索引。