hive之内外表分析
| 序列 | 特性 | 内表 | 外表 |
|---|---|---|---|
| 1 | 修饰符 | 无(无external修饰,hive默认创建的是内部表) | external |
| 2 | 管理者 | Hive | hdfs |
| 3 | 存储位置 | hive.metastore.warehouse.dir(默认:/user/hive/warehouse) | LOCATION指定,如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里 |
| 4 | load数据 | load data local inpath “/home/hdfs/data.txt” into table teacher;//copy到hdfs表目录下 | load data inpath “/user/hdfs/data.txt” into table teacher;//移动到hdfs表目录下 |
| 5 | 数据管理 | 直接删除元数据(metadata)及存储数据,对内部表的修改会将修改直接同步给元数据 | 仅仅会删除元数据,HDFS上的文件并不会被删除,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;) |
| 6 | 优点 | 删除数据方便(个人体会) | 外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。 |
外部表创建和删除表
create external table teacher(
id int,
name string,
age int
)
lacation "/t3";
--删除表
drop table if exists teacher;--数据还在hdfs
--仅删除表中数据,保留表结构
truncate table test_table;
内部表转外部表
--(ture必须大写)
alter table table_name set tblproperties("EXTERNAL"="TRUE");
外部表转内部表
--(ture必须大写)
alter table table_name set tblproperties("EXTERNAL"="FALSE");

689

被折叠的 条评论
为什么被折叠?



