一、托管表和外部表
托管表
加载数据到托管表时
create table managed_table(dummy string);
load data (local) inpath '/user/tom/data.txt' (overwrite) into table managed_table;
加入local是指从本地磁盘上上传文本文件,overwrite是删除目录中现有的所有内容,然后再去追加新的内容
丢弃表,元数据和数据会被一起删掉。最初的load操作是一个移动操作,所以数据会被彻底删除,这就是hive所谓的托管的含义
drop table managed_table;
外部表
create external table external_table(dummy string)
location '/user/tom/external_table';
load data inpath '/user/tom/data.txt' into table external_table;
在创建外部表时,hive不会检查外部表是否存在,这意味着可以把创建数据推迟到创建表之后才进行
丢弃表时,hive不会删除数据,只会删除相应的元数据
在选择使用哪种表时,普遍的做法是将存放在hdfs的初始数据集用作外部表进行使用,然后使用hive的变换功能把数据移到托管的hive表中。反